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

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

Проблема с output-параметрами в ADO [D5, MSSQL]


T{}r(l-l ©   (2004-03-12 11:40:00) 

Доброго времени суток времени, уважаемые!
Никак не разберусь с output параметрами в ADO из Delphi

вот код Delphi

begin
with ADOStProc1 do
       begin
       Close;
       Parameters.CreateParameter('@MyMess',ftString,pdOutput,100,null);
       ProcedureName:='MyProc';
       ExecProc;
       Memo1.Text:=Parameters.ParamByName('@MyMess').Value;
       end;
end;

вот хранимая на сервере

CREATE PROCEDURE [MyProc]

@MyMess char (100) output
AS
DECLARE
@MY int
SELECT @MY=MAX(Quantity)
FROM MyTemp
IF @MY=130
BEGIN
--RAISERROR(60001,16,1)
SET @MyMess=(SELECT description FROM master.dbo.sysmessages WHERE error=60003)
--PRINT @MyMess
END
Go

из Дэлфи всё время пишет "Procedure 'MyProc' expects parameter '@MyMess', which was not supplied". Я только перехожу на ADO, может я совсем не правильно подхожу к вопросу?
А вообще смысл процедур - передача во внешнюю программу сообщений о ходе выполнения хранимой процедуры.
Заранее благодарен.


T{}r(l-l   (2004-03-12 13:01:00) [1]

да, да , да, точно, мы тоже тут докопались , плюс имя процедуры надо ставить перед созданием параметров, спасибо! ; )


Nikky   (2004-03-12 12:38:00) [2]

ах да, у вас там дефолт-значения нет
сделайте
@MyMess char (100) = NULL output


T{}r(l-l   (2004-03-12 12:17:00) [3]

Попробовал - всё то же  "Procedure 'MyProc' expects parameter '@MyMess', which was not supplied"


Nikky   (2004-03-12 12:07:00) [4]


> with ADOStProc1 do
>        begin
>        Close;
>        Parameters.CreateParameter('@MyMess',ftString,pdOutput,100,null);
>        ProcedureName:='MyProc';
>        ExecProc;
>        Memo1.Text:=Parameters.ParamByName('@MyMess').Value;
>        end;
> end;


попробуйте так
with ADOStoredProc1 do begin
 Close;
 ProcedureName := 'MyProc';
 Parameters.Refresh;
 ExecProc;
 Memo1.Text := Parameters.ParamByName('@MyMess').Value;
end;


Наверх

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