怎样用query动态调用sql server的带参数的存储过程

mezw 2001-11-18 03:49:24
比如在sql server中存在一存储过程带输入参数 @empno 我在delphi中调用时
总是有找不到参数的错误,请哪位高手帮我解决一下
...全文
99 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
任你笑 2001-11-19
  • 打赏
  • 举报
回复
在 TQuery 中可以直接执行存储过程

with query1 do
begin
sql.clear;
sql.add('exec myStoredProc 2222 '); //@empno 为数字型
// sql.add('exec myStoredProc ''2222'' '); //@empno 为字符、日期型
execsql;
end;
mezw 2001-11-18
  • 打赏
  • 举报
回复
谢谢楼上各位
Bob7946 2001-11-18
  • 打赏
  • 举报
回复
呵呵,不用query就显示不出代码多嘛,你可以这样:
with query1 do
begin
close;
sql.clear;
sql.add('call mySP(:param1,:param2)');
parambyname('param1').asstring:='呵呵,第一个参数';
parambyname('param2').asstring:='呵呵,第二个参数';
open;
end;
FoxSky 2001-11-18
  • 打赏
  • 举报
回复
try
with myStoredProc do
begin
ProcedureName := 'ow_clr_Form';
Parameters.Clear;
Parameters.AddParameter;
Parameters[0].Name := 'Return';//返回值
Parameters[0].Direction := pdReturnValue;
Parameters[0].DataType := ftInteger;

Parameters.AddParameter;
Parameters[1].Name := '@Lister';//输入参数
Parameters[1].Direction := pdInput;
Parameters[1].DataType := ftString;
Parameters[1].Value := pShareData.pOperator.sUserCode;

Parameters.AddParameter;
Parameters[2].Name := '@Form_No';//OUTPUT参数
Parameters[2].Direction := pdInputOutput;
Parameters[2].DataType := ftString;
Parameters[2].Size := 10;
// Parameters[2].Value := '2001110602';

ExecProc;
if Parameters[0].Value=0 then
begin
Edit1.Text := Parameters[2].Value;
end;
end;
Except
On E:EADOError do
begin
Application.MessageBox(Pchar('由于以下原因,操作失败:'+E.message),'出错',mb_OK+Mb_IconError);
Exit;
end;
end;
mezw 2001-11-18
  • 打赏
  • 举报
回复
用storeproc和query时都是一样
FoxSky 2001-11-18
  • 打赏
  • 举报
回复
为什么用不着Query呢?
用TStoredProc啊!

34,872

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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