Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Informix [игнор отключен] [закрыт для гостей] / UDR на C / 25 сообщений из 45, страница 1 из 2
15.12.2008, 12:26
    #35714279
AlexKoe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UDR на C
Сам я немного не "в теме", но вот заставили писать расширение для ИДС. Нашел "мануалы", если так можно назвать пол абзаца, Естественно столкнулся с проблемами. В частности, что за расширение *.so. Вопрос идиота - чем можно скомпилировать, чтобы его получить?
...
Рейтинг: 0 / 0
15.12.2008, 12:39
    #35714324
vasilis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UDR на C
Если все таки удосужитесь назвать версию IDS (вы будете удивлены, но возможности очень сильно зависят от версии) то, возможно, сможем указать "мануалы" в которых значительно больше половины абзаца (кстати, а что это вы почитали ?)
И очень желательно вначале прочитать и придерживаться этого
...
Рейтинг: 0 / 0
15.12.2008, 12:54
    #35714363
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UDR на C
AlexKoeСам я немного не "в теме", но вот заставили писать расширение для ИДС. Нашел "мануалы", если так можно назвать пол абзаца, Естественно столкнулся с проблемами. В частности, что за расширение *.so. Вопрос идиота - чем можно скомпилировать, чтобы его получить?а что будет делать расширение?

*.so это библиотека под nix типа dll в винде
...
Рейтинг: 0 / 0
15.12.2008, 13:54
    #35714575
AlexKoe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UDR на C
vasilis И очень желательно вначале прочитать и придерживаться этого
Да, извиняюсь. IDS 10.0, стоит на winxp sp2. Это только для проверки.

vasilis а что это вы почитали ?
Например это и это

Журавлев Денис а что будет делать расширение?
Получает строку и флаг, на выходе строка, либо в верхнем регистре, либо в нижнем.

Журавлев Денис *.so это библиотека под nix типа dll в винде
Это я уже понял, теперь ищу способ как скомпилировать под ХР.
...
Рейтинг: 0 / 0
15.12.2008, 14:04
    #35714600
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UDR на C
AlexKoe
Получает строку и флаг, на выходе строка, либо в верхнем регистре, либо в нижнем.

Код: plaintext
1.
2.
3.
4.
5.
6.
create function mysplfunc(instr nvarchar, flag int) returning nvarchar
 If flag = 1  then 
       return upper(instr);
 else return lower(instr);
 End if;
end function;
...
Рейтинг: 0 / 0
15.12.2008, 14:06
    #35714614
AlexKoe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UDR на C
Журавлев Денис,

Забыл добавить, что входящая строка может состоять из любых символов, в том числе русских. Будет ли сия функция их нормально воспринимать?
...
Рейтинг: 0 / 0
15.12.2008, 14:10
    #35714632
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UDR на C
AlexKoeЖуравлев Денис,

Забыл добавить, что входящая строка может состоять из любых символов, в том числе русских. Будет ли сия функция их нормально воспринимать?если у человека создавшего базу хватило ума на DB_LOCALE=ru_ru..... то будет.
...
Рейтинг: 0 / 0
15.12.2008, 14:15
    #35714647
AlexKoe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UDR на C
Допустим не хватило? (=
...
Рейтинг: 0 / 0
15.12.2008, 14:25
    #35714680
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UDR на C
AlexKoeДопустим не хватило? (=а размер базы какой? Есть у меня ощущение что техподдержке это piece of cake.
...
Рейтинг: 0 / 0
15.12.2008, 14:36
    #35714718
AlexKoe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UDR на C
Стоит en_Us
База большая, менять не будут, поэтому и необходим экстеншн.
...
Рейтинг: 0 / 0
15.12.2008, 14:49
    #35714778
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UDR на C
а если так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
create function mysplfunc(instr nvarchar, flag int) returning nvarchar
define outstr nvarchar;
SET COLLATION 'ru_ru.1251';  
If flag = 1  then 
         let outstr = upper(instr);
else let outstr = lower(instr);
End if;
SET NO COLLATION;
return outstr;
end function;
...
Рейтинг: 0 / 0
15.12.2008, 14:55
    #35714799
AlexKoe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UDR на C
Хм. Посмотрю, попробую.
...
Рейтинг: 0 / 0
15.12.2008, 15:28
    #35714908
AlexKoe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UDR на C
Хотя все же лучше бы именно экстеншн, ибо задача была поставлена именно такая.
...
Рейтинг: 0 / 0
15.12.2008, 15:33
    #35714926
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UDR на C
AlexKoeХотя все же лучше бы именно экстеншн, ибо задача была поставлена именно такая.ну так пишите, мы вам не мешаем. Продакшен у вас тоже под winxp?
...
Рейтинг: 0 / 0
16.12.2008, 15:55
    #35717599
vasilis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UDR на C
AlexKoevasilis И очень желательно вначале прочитать и придерживаться этого
Да, извиняюсь. IDS 10.0, стоит на winxp sp2. Это только для проверки.
vasilis а что это вы почитали ?
Например это и это

В первую очередь желательно сначала читать родную документацию.
По вашей версии здесь http://publib.boulder.ibm.com/infocenter/idshelp/v10/index.jsp
Выбираете в содержании "Developing" - "Developing Extensions to IDS" - "IBM Informix User-Defined Routines and Data Types Developer's Guide" - и т.д.
...
Рейтинг: 0 / 0
17.12.2008, 13:58
    #35719974
AlexKoe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UDR на C
vasilis,
Читали-читали. Там все это есть, но многое не понятно.

Вот если кто поможет помогите понять как это сделать

ibmTo create a shared-object file on Windows

1. Load the abs.o object file into the abs.so DLL:, as the following example shows:

link /DLL /OUT:abs.dll /DEF:abs.def abs.obj
d:\informix\lib\SAPI.LIB

The preceding command uses the IBM Informix software installed on the d: drive in a directory named informix.
2. Put the DLL in a directory on which user informix has read permission and set the READONLY attribute with the attrib +r command:

attrib
В частности первый пункт.
...
Рейтинг: 0 / 0
17.12.2008, 16:20
    #35720436
AlexKoe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UDR на C
Можно ли написать обычную dll и использовать ее, если уж сервер на Windows 2003 стоит.
...
Рейтинг: 0 / 0
18.12.2008, 02:19
    #35721384
Sergey L.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UDR на C
AlexKoeВот если кто поможет помогите понять как это сделать
ibmTo create a shared-object file on Windows
1. Load the abs.o object file into the abs.so DLL:, as the following example shows:
link /DLL /OUT:abs.dll /DEF:abs.def abs.obj
d:\informix\lib\SAPI.LIB
The preceding command uses the IBM Informix software installed on the d: drive in a directory named informix.

В частности первый пункт.

Я так понимаю, что link - это с:\Program Files\Microsoft Visual Studio N\VC\bin\link.exe
А C/C++ компилятор - cl.exe оттуда-же.
...
Рейтинг: 0 / 0
23.12.2008, 10:52
    #35729486
AlexKoe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UDR на C
Sergey L.,

Да нет же, я не об этом.

"Load the abs.o object file into the abs.so DLL"

Вот здесь у меня разрыв подсознания.
...
Рейтинг: 0 / 0
23.12.2008, 12:23
    #35729791
Ikir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UDR на C
AlexKoeSergey L.,

Да нет же, я не об этом.

"Load the abs.o object file into the abs.so DLL"

Вот здесь у меня разрыв подсознания.

А в чём разрыв то?
Процесс создания UDR на С:
- компилируете(наверно CL) - получаете obj
- линкуете(наверно link) - получаете dll
- создаете CREATE FUNCTION aaaa()
...
EXTERNAL NAME 'место где лежит ваш dll'
LANGUAGE C;
...
Рейтинг: 0 / 0
23.12.2008, 18:40
    #35730918
AlexKoe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UDR на C
Ikir
А в чём разрыв то?


into the abs .so DLL

Я, если что, не непроходимо тупой, а студент. Ну, вообще я кажется уже все сообразил. Единственное оставшийся открытым вопрос: код можно писать на подобии этого тупо в блокноте? Компилятор его проглотит? С dll не работал.
...
Рейтинг: 0 / 0
24.12.2008, 12:01
    #35731896
Ikir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UDR на C
AlexKoe

into the abs .so DLL

Я, если что, не непроходимо тупой, а студент. Ну, вообще я кажется уже все сообразил. Единственное оставшийся открытым вопрос: код можно писать на подобии этого тупо в блокноте? Компилятор его проглотит? С dll не работал.

"Ну мало ли в Бразилии Донов Педров", надо верить строке /OUT:abs.dll .
Писать можно хоть на коленке, но в виндах, раз установлен компилятор, наверно есть красивый IDE, который будет красиво подсказывать, выделять шаблоны и прочие навороты )))))
...
Рейтинг: 0 / 0
25.12.2008, 15:42
    #35735258
AlexKoe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UDR на C
Вообщем написал dll, даже кажется правильно. Объявил ее create function, вызываю - получаю ошибку 9793.

Find Error-9793 User-defined-routine module load failed.

The following error message appears in the log:

ERROR: Loading Module module_name

A bad external name, missing file, or wrong permissions might cause this error. Log message log_message_number contains the UNIX error number no encountered and the actual module name being used. For C language on UNIX, the following log message might appear:

Error_number: C Language Module module_name can't load error_string

In the error message, error_number is the current UNIX error number, module_name is the module name from the catalog, and error_string is the dlerror() explanation.

Есть подозрение, что не правильно указал где лежит длл.

путь: C:\Program Files\IBM\Informix\lib\testnum.dll

указал
EXTERNAL NAME '/Program Files/IBM/Informix/lib/testnum.dll'
...
Рейтинг: 0 / 0
12.01.2009, 13:59
    #35752538
AlexKoe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UDR на C
Ну, что никто не может ничего сказать по этому поводу?
...
Рейтинг: 0 / 0
12.01.2009, 15:35
    #35752862
Ikir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UDR на C
А за это время пробовали поменять EXTERNAL NAME на Виндовый вид?
...
Рейтинг: 0 / 0
Форумы / Informix [игнор отключен] [закрыт для гостей] / UDR на C / 25 сообщений из 45, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]