![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Получить значение OUTPUT параметра из хран. процедуры [D6, MSSQL]
Ольга © (2006-02-06 06:46:00)Компонента TADOStoredProc лежит на форме. Параметры описаны в дизайнере формы. Выходной - @S varchar(2000) output. Выполняю процедуру из Delphi - получаю пустую строку, хотя в QueryAnalyzer строка возвращается не пустая.
Код в Delphi:
var S: string;
MyProc.Connection:=FConnect.ADOConn;
MyProc.Parameters.ParamValues['@obj_type']:='T';
MyProc.Parameters.ParamValues['@obj_name']:='SHEMA';
MyProc.ExecProc;
S:=MyProc.Parameters.ParamValues['@S'];
Что я неправильно делаю?
Begin (2006-03-20 11:35:00) [1]Если ты хочешь получить выходной параметр типа ftString или ftWideString, то надо обязательно указывать ожидаемую длину строки :
MyProc.Connection:=FConnect.ADOConn;
MyProc.Parameters.ParamValues['@obj_type']:='T';
MyProc.Parameters.ParamValues['@obj_name']:='SHEMA';
MyProc.Parameters.ParamValues['@S'].Direction := pdOutput;
MyProc.Parameters.ParamValues['@S'].Size := 2000;
MyProc.ExecProc;
S:=MyProc.Parameters.ParamValues['@S'];
k2 (2006-02-07 07:32:00) [2]может obj_name ' SСHEMA'? мало ли :)
Ольга (2006-02-06 16:37:00) [3]Спасибо, буду знать.
Нет, у меня ExecuteOptions = []
Где еще может быть собака зарыта?
stone (2006-02-06 16:12:00) [4]
> > в асинхронном режиме
>
> Это я не знаю, что за зверь. Видимо, в режиме по умолчанию.
>
Если у тебя
ExecuteOptions = [eoAsyncExecute]
то
S:=MyProc.Parameters.ParamValues['@S'];
может выполнится быстрее, чем сама процедура.
Ольга (2006-02-06 15:34:00) [5]
> TParameter.Direction + F1
Прописала Direction (хотя думаю, что это излишне - параметры описаны в дизайнере). Эффект тот же.
> в асинхронном режиме
Это я не знаю, что за зверь. Видимо, в режиме по умолчанию.
stone (2006-02-06 09:19:00) [6]У тебя процедура случайно не в асинхронном режиме выполняется?
Ega23 (2006-02-06 08:52:00) [7]TParameter.Direction + F1