如何调用存储过程(50分)

  • 主题发起人 主题发起人 嘀嗒
  • 开始时间 开始时间

嘀嗒

Unregistered / Unconfirmed
GUEST, unregistred user!
如何调用SQL server数据库中的存储过程,接收OUTPUT类型参数的返回值?
 
调用存储过程
query1.close;
query1.sql.clear;
query1.add('Execute 存储过程名 ');
qusery1.ExecSQL;
接收OUTPUT类型参数的返回值:
在存储过程中定义
create procedure p_procname
@var int output
as
begin
......
set @var =返回值
end
在Delphi 中
变量:=query1.ParamByName('@var[blue][/blue]').Value
 
declare @aaa int
exec proc @aaa
 
调用存储过程
query1.close;
query1.sql.clear;
query1.sql.add('Execute 存储过程名 ');
qusery1.ExecSQL;
接收OUTPUT类型参数的返回值:
在存储过程中定义
create procedure p_procname
@var int output
as
begin
......
set @var =返回值
end
在Delphi 中
变量:=query1.ParamByName('@var').Value
 
用query or adoquery都可以
query.close;
query.sql.clear;
query.sql.add('execute proc_name 输入参数');
query.open;
query['输出参数']就可以得到返回值
 
a:integer;
...............
query.sql.add('execute proc_name a');
..............
showmessage(inttostr(a));
 
请问若存储过程中还有其他参数,如:
create procedure p_procname
@a int
@b int
@var int output
as
begin
......
set @var =返回值
end
在Delphi中
query1.sql.add('Execute 存储过程 @a=值,@b=值,______'); ??????
还需写入返回参数吗?
为何执行时报错?
 
query1.close;
query1.sql.clear;
query1.sql.add('Execute 存储过程名 ');
qusery1.ExecSQL;
Value:=qusery1.ParamByName('@var').Value
 
同意楼上的各位,令:
如果存储过程没有定义输出变量可以用Query1.Fields[0].asString(....)得出。
 
感谢大家的帮助!终于调通了。
我发现一个关键的问题,希望有和我同样问题的同志也能借鉴。
ADOStoredProc控件添加时,Prepared属性为False。
所以在ExecProc前一定要把Prepared属性设为True,否则会报错。
好啦,问题解决了,结账了!
 
多人接受答案了。
 
后退
顶部