2,497
社区成员
发帖
与我相关
我的任务
分享
procedure TForm1.btn1Click(Sender: TObject);
var xlh:string ;
begin
getxlh(xlh);
edt1.Text := xlh ; //调用了 getxlh 过程获取的xlh的值是空的
end;
procedure TForm1.getxlh(xulh: String);
begin
StoredProc1.Close;
StoredProc1.Params.Clear;
StoredProc1.StoredProcName := 'P_getxlh';
StoredProc1.Params.CreateParam(ftString,'@a',ptInput);
StoredProc1.Params.CreateParam(ftString,'@b',ptInput);
StoredProc1.Params.CreateParam(ftString,'@c',ptOutput); // 注意这个是 输出参数
StoredProc1.ParamByName('@a').AsString :='1001' ;
StoredProc1.ParamByName('@b').AsString :='B' ;
StoredProc1.Open;
edt1.Text:= StoredProc1.ParamByName('@c').AsString ; //这样来获取 存储过程的输出参数对吗 为什么 输出参数是空的 跟踪到sql语句执行 输出参数是有值的
sss := StoredProc1.fieldbyname('xlh').AsString ; //执行到这里 sss的值为 100001 是对的
xulh:= '111';
end; //跟踪到这里 sss 的值为空 xulh的值也为空了 为什么呢?
--跟踪到的Sql 语句
declare @p3 varchar(255)
set @p3=''
exec P_getxlh @a='1001',@b='lwc000001',@c=@p3 output
select @p3
-- 下面是返回的 参数 有值
--------------------------------------------------------------------------
(无列名)
10056