Как получить параметры возвращаемые хранимой процедурой???
Необходимо сделать dll в delphi , которая с помощью хранимой процедуры должна записать передаваемые ей данные в БД и при этом вернуть параметры выполнения операции, у меня в базу все записывается, но как получить эти возвращаемые параметры понять не могу.
Делаю так
[COLOR="MediumTurquoise"]adoogk:=TADOQuery.Create(nil);
adoogk.ConnectionString:='Provider=MSDASQL.1;Persist Security Info=False;User ID=sa;Password=123456;Data Source=marketingogk6;Initial Catalog=marketingogk6';
adoogk.SQL.Add('declare @msg T_infomsg, @msgType T_int, @errCode T_int, @id T_reference exec ASKUEDATA_INS '+''''+'06.08.2006'+''''+',30,1,50123,VM000000000001,GRES24, @id out,@msgType out, @msg out, @ErrCode out');
adoogk.ExecSql; [/COLOR]
Если кто знает, то помогите!!!
За ранее благодарен.
делаю так
[color=green]
Var
i,ErrCode,MsgType:integer;
date,Msg:string;
time:Tdatetime;
begin
time:=strtodatetime(date);
adost:=TADOStoredProc.Create(nil);
adocon:=TADOConnection.Create(nil);
adocon.ConnectionString:='Provider=SQLOLEDB.1;Password=123456;User ID=sa;Initial Catalog=marketingogk6;Data Source=Sotnikovsa;Auto Translate=True;Workstation ID=SOTNIKOVSA;Use Encryption for Data=False';
adost.Connection:=adocon;
adost.ProcedureName:='ASKUEdata_ins';
with adost.Parameters.AddParameter do
begin
Name:= '@Return_value';
DataType:=ftInteger;
Direction:=pdReturnValue;
Attributes:=[paNullable];
Value:=(null);
end;
with adost.Parameters.AddParameter do
begin
Name:= '@period_end';
DataType:=ftDateTime;
Direction:=pdInput;
Attributes:=[paNullable];
Precision:=0;
Value:=time;
end;
with adost.Parameters.AddParameter do
begin
Name:= '@interval';
DataType:=ftInteger;
Direction:=pdInput;
Attributes:=[paNullable];
Precision:=10;
Value:=3;
end;
with adost.Parameters.AddParameter do
begin
Name:= '@code';
DataType:=ftInteger;
Direction:=pdInput;
Attributes:=[paNullable];
Precision:=10;
Value:=1;
end;
with adost.Parameters.AddParameter do
begin
Name:= '@value';
DataType:=ftfloat;
Direction:=pdInput;
Attributes:=[paNullable];
Precision:=10;
Value:=311111.01;
end;
with adost.Parameters.AddParameter do
begin
Name:= '@Capacity_exid';
DataType:=ftString;
Direction:=pdInput;
Attributes:=[paNullable];
Size:=255;
Value:='VM000000000001';
end;
with adost.Parameters.AddParameter do
begin
Name:= '@guid';
DataType:=ftString;
Direction:=pdInput;
Attributes:=[paNullable];
Value:='Gres24';
end;
with adost.Parameters.AddParameter do
begin
Name:= '@id';
DataType:=ftBCD;
Direction:=pdOutput;
Attributes:=[paNullable];
Value:=(null);
end;
with adost.Parameters.AddParameter do
begin
Name:= '@MsgType';
DataType:=ftInteger;
Direction:=pdOutput;
Attributes:=[paNullable];
Value:=(null);
end;
with adost.Parameters.AddParameter do
begin
Name:= '@Msg';
DataType:=ftString;
Direction:=pdOutput;
Attributes:=[paNullable];
Value:=(null);
end;
with adost.Parameters.AddParameter do
begin
Name:= '@ErrCode';
DataType:=ftInteger;
Direction:=pdOutput;
Attributes:=[paNullable];
Value:=(null);
end;
i:=adost.Parameters.Count;
adost.ExecProc;
ErrCode:=Adost.Parameters.ParamValues['@ErrCode'];
MsgType:= Adost.Parameters.ParamValues['@MsgType'];
msg:=Adost.Parameters.ParamValues['@msg'];
if ErrCode>0 then
Windows.MessageBox(hWnd, Pchar(Msg), 'Command Line', MB_OK);[/color]
т.е. вызываю процедуру которая выглядит так
[color=green]create procedure ASKUEDATA_INS
@period_end T_datetime,
@interval T_int,
@code T_int,
@value T_float,
@capacity_exid T_sname,
@guid T_sname,
@id T_reference out,
@Msg T_infomsg out,
@MsgType T_int out,
@ErrCode T_int out
as
begin и т.д.[/color]
Если делать просто то все ок, но в dll ? когда прописываешь все вручную, то ничего не получается, помогите пожалуйста, очень нужна помощь!!!
Заранее благодарен!!!