关于在PB中动态调用ORACLE的存储过程

gongshan 2000-07-24 09:16:00
declare procedure proc_mine for scott.proc1(:ls_a);
execute proc_mine;
要执行多个PROCEDURE,怎样把scott.proc1(:ls_a)用一个变量代替
...全文
357 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
gongshan 2000-07-26
  • 打赏
  • 举报
回复
多谢这位大哥
hyzx2000 2000-07-25
  • 打赏
  • 举报
回复
ls_sql = "execute proc_temp"
gongshan 2000-07-25
  • 打赏
  • 举报
回复
按你说的做了,果然出现“ora-24333零迭代计数”的提示,我创建如下简单
的ORACLE过程,还是出现该错误,帮人帮到底:

oracle过程:

create or replace procedure proc_temp is
ln_a number(9);
begin
select count(*) into ln_a from aaa;
end;
/


PB程序:
declare proc_mine dynamic procedure for sqlsa;
string ls_sql = "proc_temp"
prepare sqlsa from :ls_sql;
execute dynamic proc_mine ;
messagebox("after execute",string(sqlca.sqlcode) + " " + sqlca.sqlerrtext)

hyzx2000 2000-07-24
  • 打赏
  • 举报
回复
你可以执行每一句后都显示一下sqlca.sqlcode和sqlca.sqlerrtext
hyzx2000 2000-07-24
  • 打赏
  • 举报
回复
?代表可变参数,proc_1(?),在execute dynamic proc_mine using :ls_a,执行时将以ls_a代替?。你这里参数d_rq是date类型,应该将参数的变量声明为datetime类型。你的存储过程没有out参数,因此不需要fetch into语句。
gongshan 2000-07-24
  • 打赏
  • 举报
回复
hyzx2000:
按你的实验过,无效,你能不能写具体点

我的ORACLE过程如下,无返回值:
create or replace procedure proc_1(d_rq in date) is
begin
...
end;

在PB中怎样动态调用,特别是那个问号代表什么,
hyzx2000 2000-07-24
  • 打赏
  • 举报
回复
使用动态SQL
declare proc_mine dynamic procedure for sqlsa;
string ls_sql = "scott.proc1(?)"
prepare sqlsa from :ls_sql;
string ls_a
execute dynamic proc_mine using :ls_a;
string ls_result
fetch proc_mine into :ls_result;
close proc_mine;

1,072

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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