关于如何执行动态存储过程的例子,可以看看。

polestarxu 2006-10-11 02:30:09
/*Oracle存储过程语法
CREATE OR REPLACE PROCEDURE dap_test
(checked IN VARCHAR2,cnu OUT INTEGER)
AS
checked1 VARCHAR2(20) ;
BEGIN
checked1 := checked ;
IF checked1 = 'YES' THEN
SELECT COUNT(*) INTO cnu FROM JEST ;
END IF ;
dbms_output.put_line(cnu);
EXCEPTION
WHEN NO_DATA_FOUND THEN
dbms_output.put_line('没有数据');
END ;
*/
integer li_count
string ls_check
ls_check = "YES"
transaction trans
trans = sqlca

declare lp_test dynamic procedure for sqlsa;
prepare sqlsa from "execute dap_test2 @checked=?" using trans; // 注意一定要加execute
execute dynamic lp_test using :ls_check;
If sqlca.sqlcode = 0 then
fetch lp_test into :li_count;
messagebox ( "Hi",li_count )
else
messagebox ( "Error",sqlca.sqlerrtext )
end if
close lp_test;
...全文
356 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
AFIC 2006-10-11
  • 打赏
  • 举报
回复
晕倒,看来你是不经常考虑效率了。
polestarxu 2006-10-11
  • 打赏
  • 举报
回复
便于维护。
要是增加一个存储过程,那不就得修改程序了。
动态存储的话可以把这些信息写入数据库中,到时数据库加一条记录就可以了
AFIC 2006-10-11
  • 打赏
  • 举报
回复
除非你事先不知道存储过程名,否则有啥意义?
DECLARE proc1 PROCEDURE FOR dap_test(:ls_check);
execute proc1 ;
FETCH proc1 INTO :li_count;
不就完了。

1,108

社区成员

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

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