请教:客户端如何调用带返回参数的存储过程(MS SQL Server+ADO)(100分)

M

MuMian

Unregistered / Unconfirmed
GUEST, unregistred user!
在MS SQL Server 2000 + ADO的情况下,
如有存储过程:stp ,有两个参数: @P1 int, @P2 varchar(100) output
中间层用ADOStoredProc1连接stp,客户端用ClientDataSet1连接ADOStoredProc1,
在客户端我按BDE中调用方法如下:
var s1:string;
with ClientDataSetdo
begin
close;
params.ParamByName('@P1').asInteger:=1;
Execute;
s1 :=Params.ParamByName('@P2').asString;
.........
end;
执行到时候就会遇到如下错误:不正确地定义参数对象,提供了不一致或不完整的信息
请教各位!
 
我建议你使用ADOquery控件,使用ADOStoredProc实在是太烦琐了;
我这样写的代码:
with adoquery1do
begin
close;
sql.Clear;
sql.Add('declare @aa varchar(100) ');
sql.Add('exec stp xxx,@aa OUTPUT');
--xxx对应是 @P1 @aa对应是 @P2
sql.Add('select @aa ');
open;
end;
这样 ADOQuery1.fields[0].asstring 就是你要的值
 
接受答案了.
 
顶部