PB调用Oracle存储过程的问题,请高手指点,不胜感激!!!!

snooper 2004-08-27 10:13:36
我在Oracle中定义了一个存储过程,如下:
create or replace procedure p_Database_DropTable is
-- 声明游标
CURSOR curDropTableList Is
Select 'Drop table ' || table_name || ' Cascade Constraints' Drop_tables from User_all_tables;
strdroptable Varchar2(60);
begin
-- 打开游标
Open curDropTableList;
Fetch curDropTableList Into strdroptable;
While curDropTableList%found
Loop
Execute immediate strdroptable;
Fetch curDropTableList Into strdroptable;
End Loop;
-- 关闭游标
Close curDropTableList;
end p_Database_DropTable;

然后我在Pb中声明此存储过程,如下:
Declare procDropTable Procedure For p_Database_DropTable Using SQLCA;

但是我保存时就出现非法,说指令引用“0x00000000“内存,该内存不能为“read",不知道为什么?
...全文
194 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
lfd 2004-08-30
  • 打赏
  • 举报
回复
你可以试试用这种方法调用
定义一个user object在declear的local external function的脚本窗口点击右键:
paste spacial-》sql-》remote stored procedures选择你的存储过程
保存该user object名为uo_pro
在application页面,点击属性窗口的additiaonal properties按钮,选择viable types在sqlca中输入你的user object名uo_pro
snooper 2004-08-27
  • 打赏
  • 举报
回复
我也这么想过,但是不行,真是奇怪了!!!
sywen 2004-08-27
  • 打赏
  • 举报
回复
恭喜樓主
在p_Database_DropTable後加()是不是也可以。p_Database_DropTable();
snooper 2004-08-27
  • 打赏
  • 举报
回复
问题已经解决了,我加了一个不使用的参数,然后就可以了,但是为什么呢?
难道Pb调用存储过程必须带参数吗?
郁闷......
snooper 2004-08-27
  • 打赏
  • 举报
回复
regenerate该对象没有问题
sywen 2004-08-27
  • 打赏
  • 举报
回复
最新的版本好像是pb8.04 build 10656。
在沒有加存儲過程前,你試試重新regenerate這個對象看看。
snooper 2004-08-27
  • 打赏
  • 举报
回复
我用的是pb8.04 build 10501
sywen 2004-08-27
  • 打赏
  • 举报
回复
著好像是pb的問題。
snooper 2004-08-27
  • 打赏
  • 举报
回复
存储过程我已经在Pl/Sql上调试过了,没有问题。
snooper 2004-08-27
  • 打赏
  • 举报
回复
应该不是的,因为我们好几台机器都是这样的。
sywen 2004-08-27
  • 打赏
  • 举报
回复
肯定是你的系統有問題,我這裡p_Database_DropTable()或者
p_Database_DropTable(:ls_arg)或者p_Database_DropTable都沒問題
snooper 2004-08-27
  • 打赏
  • 举报
回复
到底为什么?

740

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 脚本语言
社区管理员
  • 脚本语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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