powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / расширенная процедура
25 сообщений из 44, страница 1 из 2
расширенная процедура
    #32039449
Rom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
угораздило меня написать процедурку

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
unit func;
interface

function xp_test:integer; stdcall;
function GetXpVersion:integer; stdcall;

implementation

function xp_test:integer; stdcall;
begin
result :=  666 ;
end;

function GetXpVersion:integer; stdcall;
begin
result:= 1 ;
end;

end.


dll цепляется, но возвращает NULL
может кто писал, подскажите
...
Рейтинг: 0 / 0
расширенная процедура
    #32039455
Rom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
EXEC sp_addextendedproc 'xp_test', 'TestDll.dll'


Код: plaintext
1.
2.
declare @f int
exec xp_test @f output
select @f


на выходе - NULL
...
Рейтинг: 0 / 0
расширенная процедура
    #32039461
AAron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я конечно не силен в делфи, но думаю что в данном случае надо писать конструкцию типа
Код: plaintext
1.
2.
3.
declare @f int
exec @f = xp_test
select @f

потому как result - результат выполнения функции и вряд ли он будет OUTPUT-параметром
...
Рейтинг: 0 / 0
расширенная процедура
    #32039463
Rom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 AAron - блин, заработало !
Спасибо !
...
Рейтинг: 0 / 0
расширенная процедура
    #32039464
Rom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот кусок из BOL

Transact-SQL Script
-- TSQL script exercising xp_hello sample
use master
go

sp_addextendedproc 'xp_hello', 'xp_hello.dll'
go

-- Call xp_hello with literal parameters
declare @txt varchar(33)
exec xp_hello @txt OUTPUT
select @txt AS OUTPUT_Parameter
go

sp_dropextendedproc 'xp_hello'
go

dbcc xp_hello(free)
go

-- EXPECTED RESULTS
-- Column 1:
-- ---------
-- Hello World!

-- (1 row(s) affected)

-- OUTPUT_PARAMETER
-- ----------------
-- Hello World!

-- (1 row(s) affected)
...
Рейтинг: 0 / 0
расширенная процедура
    #32039465
Rom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
declare @txt varchar(33)
exec xp_hello @txt OUTPUT
select @txt AS OUTPUT_Parameter
go
они ошибаются что ли ?
...
Рейтинг: 0 / 0
расширенная процедура
    #32039471
AAron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может и не ошибаются...
я же не вижу текста процедуры xp_hello...

могу предположить что там что-то типа

int xp_hello(int * param1)
{
param1 = ptrInnerParam
}

(сорри за возможные ошибки, забыл я уже C++)... но смысл в том, что скорее параметр передается по указателю, и в случае OUTPUT, это значение TSQL получает обратно.
...
Рейтинг: 0 / 0
расширенная процедура
    #32039482
Фотография ziktuw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Они" не ошибаются. Возвращаемое целочисленное значение в Extended Stored Procedure зарезервировано для флага нормально процедура выполнилась (SUCCESS=1) или ненормально (FAIL=0). Дело, конечно, разработчика - какие еще значения через результат ворачивать, но результат такого мероприятия не гарантирован. А полагается возвращать значения через OUTPUT-параметры. С параметрами работают специальные ODS-фукции, с которыми придется познакомиться в MSDN.
...
Рейтинг: 0 / 0
расширенная процедура
    #32039488
Rom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
будем знакомиться с ентими функциями, всем огромное спасибо !
...
Рейтинг: 0 / 0
расширенная процедура
    #32039718
Rom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может знает кто, библиотеку для Дельфинария, которая содержит описание ODS функций (я могу конечно сам их описать, но это слишком долго).
Я бы с радостью перешел на С, но так вдруг не получится, так что приходится пока на дельфинарии.
...
Рейтинг: 0 / 0
расширенная процедура
    #32039720
puskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дльфинарий не для того создана - Имхо, на нем гуйню писать надо. А процы расшаранные лучше всяко на си, так что не дрейфь, переходи - куча примеров есть, если что.
...
Рейтинг: 0 / 0
расширенная процедура
    #32039721
Фотография ziktuw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дельфовый хидер для ODS видел на http://www.delphi-jedi.org в разделе API Library
...
Рейтинг: 0 / 0
расширенная процедура
    #32039723
Rom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Dankov - да нашел, спасибо !
2 puskin - согласен, но для того, что бы понять суть - можно и на Дельфинарии, это же не для использования в коммерческих проектах, а так, потихоничку, перейдем на С
...
Рейтинг: 0 / 0
расширенная процедура
    #32039725
puskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нет, ну точно дегенераты - jedi, Yoda....
...
Рейтинг: 0 / 0
расширенная процедура
    #32039727
Rom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
?
...
Рейтинг: 0 / 0
расширенная процедура
    #32039734
puskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я про козлов с jedi
...
Рейтинг: 0 / 0
расширенная процедура
    #32039737
Фотография ziktuw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чем они тебя так разозлили?
...
Рейтинг: 0 / 0
расширенная процедура
    #32039894
Rom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так вот, пишу я процедуру, она отрабатывает, возвращает данные, а затем выдает

(2 row(s) affected)

ODBC: Msg 0, Level 19, State 1
SqlDumpExceptionHandler: Process 52 generated fatal exception c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server is terminating this process.

Connection Broken

может у кого было такое, поделитесь .....

WINDOWS 2000 Prof
SQL 2000 DE SP2
...
Рейтинг: 0 / 0
расширенная процедура
    #32039901
Фотография MiCe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пиши на си...
...
Рейтинг: 0 / 0
расширенная процедура
    #32039904
Rom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 MiCe - спасибо, помог братан, побольше бы таких дельных советов !
...
Рейтинг: 0 / 0
расширенная процедура
    #32039957
Фотография ziktuw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, это ошибка в коде. Надо смотреть.
...
Рейтинг: 0 / 0
расширенная процедура
    #32039968
Rom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Dankov - это пример, кот. я скачал по ссылке.
Первый прокатывает, второй при

ColName1 := 'spname';
i:=srv_describe(SrvProc, 0, ColName1, SRV_NULLTERM, SRVCHAR, MAXLEN, SRVCHAR, 0, nil);

дает ошибку(т.е. то что я писал выше), хотя код возврата не показывает ошибку, данные процедура возвращает, а все равно пишет, блин, ошибка и все

если закомментировать строки, все ОК
...
Рейтинг: 0 / 0
расширенная процедура
    #32039972
Фотография ziktuw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если ColName1 типа string, то должно быть так:
i:=srv_describe(SrvProc, 0, pchar(ColName1), SRV_NULLTERM, SRVCHAR, MAXLEN, SRVCHAR, 0, nil);
...
Рейтинг: 0 / 0
расширенная процедура
    #32039977
Rom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
видишь ли в чем дело, она отрабатывает корректно,
т.е. в QA я честно вижу 2 столбика данных, а откуда это сообщение вылазит, нипойму.
Насчет pchar можно попробовать
...
Рейтинг: 0 / 0
расширенная процедура
    #32039978
Фотография MiCe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
i:=srv_describe(SrvProc, 0, ColName1, SRV_NULLTERM, SRVCHAR, MAXLEN, SRVCHAR, 0, nil)
второй параметр блин... нумерация с 1!
и не обижайся...
...
Рейтинг: 0 / 0
25 сообщений из 44, страница 1 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / расширенная процедура
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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