Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Функция из внешней DLL  [new]
WertAndrey
Member

Откуда: Калининград
Сообщений: 78
Подскажите - каким образом в процедуре можно выполнить функцию из сторонней DLL, где копать???
19 дек 05, 07:41    [2184142]     Ответить | Цитировать Сообщить модератору
 Re: Функция из внешней DLL  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Extended Stored Procedures
19 дек 05, 07:45    [2184143]     Ответить | Цитировать Сообщить модератору
 Функция из внешней DLL  [new]
WertAndrey
Member

Откуда: Калининград
Сообщений: 78
нашел..... немного получается...
споткнулся на другом: если в параметрах функции перезается указатель на строку, каким образом это обойти?
19 дек 05, 08:54    [2184204]     Ответить | Цитировать Сообщить модератору
 Re: Функция из внешней DLL  [new]
Александр Спелицин
Member

Откуда: Из ближайшего подмосковья.
Сообщений: 2506
WertAndrey
...если в параметрах функции перезается указатель на строку, каким образом это обойти?

Непонятно, в чем проблема и что требуется обойти.
Внешние хранимые процедуры это почти обычные функции, экспортируемые из DLL, но объявленные специальным образом. Т.е. такая ф-ция не может являться внешней хранимой процедурой MSSQL (для MSSQL 2000):
void function MyFunc (CHAR* c);

В BOL все подробно расписано, как должны объявляться такие функции.
А также см. примеры к MSSQL:
C:\Program Files\Microsoft SQL Server\80\Tools\DevTools\Samples\ods\xp_hello\xp_hello.c
19 дек 05, 10:03    [2184369]     Ответить | Цитировать Сообщить модератору
 Функция из внешней DLL  [new]
WertAndrey
Member

Откуда: Калининград
Сообщений: 78
если функция возвращает указатель на строку...
вывожу её select-ом, выдает число /думаю адрес строки/
как мне прочитать строку??
19 дек 05, 11:46    [2184787]     Ответить | Цитировать Сообщить модератору
 Re: Функция из внешней DLL  [new]
Александр Спелицин
Member

Откуда: Из ближайшего подмосковья.
Сообщений: 2506
BOL:
Creating Extended Stored Procedures
An extended stored procedure is a function with a prototype:

SRVRETCODE xp_extendedProcName (SRVPROC *);


Где здесь место для указателя на возвращаемую строку????
19 дек 05, 12:01    [2184872]     Ответить | Цитировать Сообщить модератору
 Функция из внешней DLL  [new]
WertAndrey
Member

Откуда: Калининград
Сообщений: 78
т.е.
другими словами - если функция возвращает указатель,
у меня НИЧЕГО не получится????
19 дек 05, 13:29    [2185412]     Ответить | Цитировать Сообщить модератору
 Re: Функция из внешней DLL  [new]
Александр Спелицин
Member

Откуда: Из ближайшего подмосковья.
Сообщений: 2506
К сожалению влоб никак. Придется писать функцию-обертку.
У функции, кот. является внешней хранимой процедурой должен быть только прототип, заявленный в БОЛ. Если Вам нужно вернуть строку, то делайте это либо как Output параметр, либо возвращайте ее набором данных. Как это сделать подробно расписано в БОЛ и примерах.
19 дек 05, 14:54    [2185953]     Ответить | Цитировать Сообщить модератору
 Re: Функция из внешней DLL  [new]
mikhail_n
Guest
Да ни нада никакой обёртки, просто в теле Вашей функции вызываете srv_paramsetoutput(.....) и всё.
19 дек 05, 23:13    [2187693]     Ответить | Цитировать Сообщить модератору
 Re: Функция из внешней DLL  [new]
Ц4
Guest
если DDL - сторонняя, как сказано в условии задачи - обёртку нужно писать
19 дек 05, 23:52    [2187809]     Ответить | Цитировать Сообщить модератору
 Re: Функция из внешней DLL  [new]
Ц4
Guest
Да и чё там писать? Заготовку можно сделать при помощи Visual Studio 6,2003(2005 уже не годится) - Extended Stored Procedure выбрать.

Дальше - и в BOL и в инете полно действующих примеров
20 дек 05, 00:10    [2187866]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить