Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / расширенная процедура / 25 сообщений из 44, страница 1 из 2
29.07.2002, 16:51:14
    #32039449
Rom
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
29.07.2002, 17:08:09
    #32039455
Rom
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
29.07.2002, 17:27:24
    #32039461
AAron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
расширенная процедура
я конечно не силен в делфи, но думаю что в данном случае надо писать конструкцию типа
Код: plaintext
1.
2.
3.
declare @f int
exec @f = xp_test
select @f

потому как result - результат выполнения функции и вряд ли он будет OUTPUT-параметром
...
Рейтинг: 0 / 0
29.07.2002, 17:29:50
    #32039463
Rom
Rom
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
расширенная процедура
2 AAron - блин, заработало !
Спасибо !
...
Рейтинг: 0 / 0
29.07.2002, 17:33:09
    #32039464
Rom
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
29.07.2002, 17:34:10
    #32039465
Rom
Rom
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
расширенная процедура
declare @txt varchar(33)
exec xp_hello @txt OUTPUT
select @txt AS OUTPUT_Parameter
go
они ошибаются что ли ?
...
Рейтинг: 0 / 0
29.07.2002, 17:50:27
    #32039471
AAron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
расширенная процедура
может и не ошибаются...
я же не вижу текста процедуры xp_hello...

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

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

(сорри за возможные ошибки, забыл я уже C++)... но смысл в том, что скорее параметр передается по указателю, и в случае OUTPUT, это значение TSQL получает обратно.
...
Рейтинг: 0 / 0
29.07.2002, 18:09:24
    #32039482
ziktuw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
расширенная процедура
"Они" не ошибаются. Возвращаемое целочисленное значение в Extended Stored Procedure зарезервировано для флага нормально процедура выполнилась (SUCCESS=1) или ненормально (FAIL=0). Дело, конечно, разработчика - какие еще значения через результат ворачивать, но результат такого мероприятия не гарантирован. А полагается возвращать значения через OUTPUT-параметры. С параметрами работают специальные ODS-фукции, с которыми придется познакомиться в MSDN.
...
Рейтинг: 0 / 0
29.07.2002, 18:15:46
    #32039488
Rom
Rom
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
расширенная процедура
будем знакомиться с ентими функциями, всем огромное спасибо !
...
Рейтинг: 0 / 0
30.07.2002, 17:10:52
    #32039718
Rom
Rom
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
расширенная процедура
может знает кто, библиотеку для Дельфинария, которая содержит описание ODS функций (я могу конечно сам их описать, но это слишком долго).
Я бы с радостью перешел на С, но так вдруг не получится, так что приходится пока на дельфинарии.
...
Рейтинг: 0 / 0
30.07.2002, 17:17:55
    #32039720
puskin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
расширенная процедура
Дльфинарий не для того создана - Имхо, на нем гуйню писать надо. А процы расшаранные лучше всяко на си, так что не дрейфь, переходи - куча примеров есть, если что.
...
Рейтинг: 0 / 0
30.07.2002, 17:24:35
    #32039721
ziktuw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
расширенная процедура
Дельфовый хидер для ODS видел на http://www.delphi-jedi.org в разделе API Library
...
Рейтинг: 0 / 0
30.07.2002, 17:28:48
    #32039723
Rom
Rom
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
расширенная процедура
2 Dankov - да нашел, спасибо !
2 puskin - согласен, но для того, что бы понять суть - можно и на Дельфинарии, это же не для использования в коммерческих проектах, а так, потихоничку, перейдем на С
...
Рейтинг: 0 / 0
30.07.2002, 17:31:51
    #32039725
puskin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
расширенная процедура
нет, ну точно дегенераты - jedi, Yoda....
...
Рейтинг: 0 / 0
30.07.2002, 17:37:58
    #32039727
Rom
Rom
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
расширенная процедура
?
...
Рейтинг: 0 / 0
30.07.2002, 18:04:21
    #32039734
puskin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
расширенная процедура
я про козлов с jedi
...
Рейтинг: 0 / 0
30.07.2002, 18:16:34
    #32039737
ziktuw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
расширенная процедура
Чем они тебя так разозлили?
...
Рейтинг: 0 / 0
31.07.2002, 12:04:10
    #32039894
Rom
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
31.07.2002, 12:26:44
    #32039901
MiCe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
расширенная процедура
пиши на си...
...
Рейтинг: 0 / 0
31.07.2002, 12:29:49
    #32039904
Rom
Rom
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
расширенная процедура
2 MiCe - спасибо, помог братан, побольше бы таких дельных советов !
...
Рейтинг: 0 / 0
31.07.2002, 13:48:46
    #32039957
ziktuw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
расширенная процедура
Ну, это ошибка в коде. Надо смотреть.
...
Рейтинг: 0 / 0
31.07.2002, 14:00:58
    #32039968
Rom
Rom
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
расширенная процедура
2 Dankov - это пример, кот. я скачал по ссылке.
Первый прокатывает, второй при

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

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

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


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