是不是触发器里不能使用CURSOR?

amstar 2003-08-29 10:09:58
我DECLARE 了一个CURSOR ,在存储过程中可以用,放到触发器里却总报错.
...全文
74 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
beckhambobo 2003-09-03
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/2216/2216058.xml?temp=.892666
keyset 2003-09-03
  • 打赏
  • 举报
回复
在oracle9i中触发器创建在sys模式下面时就可以对没有变异表的各种限制
如果在其它模式下,对行级触发器来说,就有两条对变异表的限制.
可能是你的触发器与别人的触发器创建在不同的模式下
l2g32003 2003-08-30
  • 打赏
  • 举报
回复
把你的trigger 给拿出来看看吧
changqr 2003-08-30
  • 打赏
  • 举报
回复
可以的啊,我试验过。
l2g32003 2003-08-29
  • 打赏
  • 举报
回复
SQL> create table t (n number);

表已创建。

SQL> insert into t values(1);

已创建 1 行。

SQL> insert into t values(2);

已创建 1 行。

SQL> commit;

提交完成。

SQL> create table a (n number);

表已创建。

1 create or replace trigger a_t before insert on a for each row
2 declare
3 v_t t.n%type;
4 cursor v_c is select n from t;
5 begin
6 open v_c;
7 loop
8 fetch v_c into v_t;
9 exit when v_c%notfound;
10 dbms_output.put_line(v_t);
11 end loop;
12 close v_c;
13* end;
SQL> /

触发器已创建

SQL> set serveroutput on size 10000
SQL> insert into a values(1);
1
2

已创建 1 行。


可以 你是不是select 变异表了
tiangou 2003-08-29
  • 打赏
  • 举报
回复
没有试过,
如果不行的话,不妨将游标处理的部分放在function或procedure中完成,
然后在触发器中调用,这样应该可以的
zb1119 2003-08-29
  • 打赏
  • 举报
回复
l2g32003(leeshow
你写的不错,但我为什么没建出来?
beckhambobo 2003-08-29
  • 打赏
  • 举报
回复
把你代码贴出来,让大家分析

17,078

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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