在Delphi里怎么调用Oracle的存储过程?

whdly 2003-08-23 10:54:18
比如一个存储过程名:ccgc,那么我想在程序中调用它。应该怎么办呢?具体做法和代码怎么写?谢谢~!!
...全文
44 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
甜而不腻 2003-08-23
  • 打赏
  • 举报
回复
procedure YdThread.ExecProSms_SHARP(var SOPCODEID,STEL,SCNT,SMINFO:STRING);
begin
stp := TStoredProc.Create(nil); //动态创建,其实直接放一个控件也可以,
try //根据你的要求,ADO,和BDE差不多。
stp.DatabaseName :=DataModule1.Database1.DatabaseName; //你定义的DATABASE,
stp.SessionName := DataModule1.Session1.SessionName;
stp.Active := False;
stp.StoredProcName := 'PRO_SHARP_SMS'; //存储过程名称
stp.Params.Clear;

stp.Params.Add;
stp.Params[0].Name := 'SOPCODEID';
stp.Params[0].DataType := ftString; //入口参数1,字符型
stp.Params[0].ParamType := ptInput;
stp.Params[0].AsString := SOPCODEID;

stp.Params.Add;
stp.Params[1].Name := 'STEL'; //入口参数2,字符型
stp.Params[1].DataType := ftString;
stp.Params[1].ParamType := ptInput;
stp.Params[1].AsString := STel;

stp.Params.Add;
stp.Params[2].Name := 'SCNT';
stp.Params[2].DataType := ftString; //入口参数3,字符型
stp.Params[2].ParamType := ptInput;
stp.Params[2].AsString := SCNT;

stp.Params.Add;
stp.Params[3].Name := 'SMS_INFO';
stp.Params[3].DataType := ftString;
stp.Params[3].ParamType := ptoutput; //出口参数,返回处理过的内容

stp.ExecProc; //执行
sminfo:=stp.Params[3].AsString ; //返回参数的值。

finally
stp.Free; //释放刚才的动态创建的过程。
end;

end;
woodpan 2003-08-23
  • 打赏
  • 举报
回复
adoquery时语句应该写为query.sql.text:='{call ccgc}'
zousoft 2003-08-23
  • 打赏
  • 举报
回复
Oracle的存储过程有什么与众不同吗?

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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