ADO中如何调用存储过程的输出参数

msony 2008-07-17 10:35:04
有一段存储过程我如何使用ADO控件调用它的输出值和输入它的输入值

CREATE PROC P_NextBH
@Name char(3),
@BH nvarchar(20) OUTPUT
AS
BEGIN TRAN
if @Name='YJD'
begin
Update DHsystem WITH(ROWLOCK) SET @BH=YJD+1, YJD=YJD+1
end

if @Name='CYD'
begin
Update DHsystem WITH(ROWLOCK) SET @BH=CYD+1, CYD=CYD+1
end

COMMIT TRAN
GO
...全文
111 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
JeffChung 2008-07-18
  • 打赏
  • 举报
回复

with Self.ADOStoredProc1 do begin
ProcedureName := 'P_NextBH';
Parameters.CreateParameter('@Name,ftString, pdInput, 3, 'chn');
Parameters.CreateParameter('@BH'',ftString, pdOutput, 20, '');
ExecProc;

ShowMessage( Parameters.ParamByName('@BH').Value );
end;
火龙岛主 2008-07-18
  • 打赏
  • 举报
回复
输入和输出参数调用方法是一样的,你只要在调用的时候给输出参数一个初始值就可以了。
delphi的示例如下:

var
P1, P2: TParam;
begin
...
with StoredProc1 do begin
StoredProcName := 'GET_EMP_PROJ';
Params.Clear;
P1 := TParam.Create(Params, ptInput);
P2 := TParam.Create(Params, ptOutput);
try
Params[0].Name := 'EMP_NO';
Params[1].Name := 'PROJ_ID';
ParamByname('EMP_NO').AsSmallInt := 52;
ExecProc;
Edit1.Text := ParamByname('PROJ_ID').AsString;
finally
P1.Free;

P2.Free;
end;
end;
...
end;


radarhp 2008-07-18
  • 打赏
  • 举报
回复
顶一个,嘿嘿

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧