Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Получить значение 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


Наверх

Титульная страница Поиск, карта сайта Написать письмо