delphi如何用TADOStoredProc调用mysql的存储过程?

needs 2010-12-29 02:30:04
存储过程带有输入输出参数,参数该如何写,有什么要注意的
...全文
375 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
needs 2010-12-29
  • 打赏
  • 举报
回复
主要是OUT参数的使用
needs 2010-12-29
  • 打赏
  • 举报
回复
谢谢楼上,不过我要的是MYSQL的调用例子,以及参数的命名方法,比如,存储过程中的变量名lVar,在调用时StorPro.Parameters.CreateParameter('as_gh', ftString, pdInput , 10, NULL)这里'as_gh'该使用什么名字

这里的NULL就是所创建的参数的值,创建和赋值可以一步完成,不用分二步
ecjtu5208 2010-12-29
  • 打赏
  • 举报
回复
CREATE procedure add_new(
p_id in number,
p_name in varchar2,
p_addr in varchar2)
is
begin
insert into liudzh.liu_table values(p_id,p_name,p_addr);
commit;
end;


with StoredProc1 do
for i := StrToInt(Edit1.text) to StrToInt(Edit4.Text) do
try
StoredProc1.Params[0].AsInteger := i;
StoredProc1.Params[1].AsString := Edit2.Text+IntToStr(i);
StoredProc1.Params[2].AsString := Edit3.Text+IntToStr(i);
StoredProc1.Prepare;
StoredProc1.ExecProc;
except
ShowMessage('error');
end;


用adoquery也可以调用
如:
adoquery1.close ;
adoquery1.sql:= '{call procedurename (vlaues)}';
adoquery1.open ;//有结果集返回
adoquery1.execsql //无结果集返回



对于存储过程的调用使用的控件TADOStoredProc。
创建方法和连接都很简单。
StorPro:=TADOStoredProc.Create(nil);
然后定义存储过程的名字和输入参数:
StorPro.ProcedureName:=ProName;
StorPro.Parameters.clear;
StorPro.Close;
StorPro.Parameters.CreateParameter('as_gh', ftString, pdInput , 10, NULL);
StorPro.Parameters.CreateParameter('as_in', ftString, pdInput , 100, NULL);
StorPro.Parameters.CreateParameter('as_out', ftString, pdOutput , 255, NULL);
大家可能看到函数CreateParameter中的第3个参数,pdInput 就是用来定义此参数是输入参数函数输出参数。具体的参数函数是:存储过程参数名称、类型、输入输出参数类型、长度还有就是最后一个参数Delphi帮助中说是Value: OleVariant,不过我没有用过。一般我赋值为NULL。
上面的过程是定义这个存储过程的参数。在调用的时候自然需要给参数赋值。
赋值过程为(其中WorkID和DataID是事先定义好的两个变量):
StorPro.Parameters[0].value :=WorkID;
StorPro.Parameters[1].value :=DataID;
赋值完成后运行此存储过程:
StorPro.prepared:=true;
StorPro.ExecProc;
好了存储过程调用以后,我们希望得到这次存储过程返回的参数'as_out'的值。
fxh7622:=StorPro.Parameters.parambyname('as_out').Value;
这个时候存储过程返回的值就保存在了fxh7622里面。
其实获得存储过程的返回值比较简单,希望对大家有帮助。
ecjtu5208 2010-12-29
  • 打赏
  • 举报
回复
给你一个Oracle的例子

2,498

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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