create table t1(id number primary key,name varchar2(100));
insert into t1 values(1,'aaa');
insert into t1 values(2,''bbb');
commit;create or replace function fun1(p_id number ) return varchar2 is
Result varchar2(100 );
begin
select name||'aa' into Result from t1 where id=p_id;
return( Result);
end fun1;update t1 set name=(fun1( 2)) where 1= 1; 求助-此问题的解决方案。

解决方案 »

  1.   

    你的函数里包含t1要更新的表直接更新即可update t1 set name=name||'aa' where 1= 1;其实更新纯属没有必要啊,在查询的时候加上aa就可以了》?
      

  2.   

    see:
    http://bbs.csdn.net/topics/390382810
      

  3.   

    你的更新语句会导致函数fun1的结果发生变化,假如允许更新,这也将属于一个死循环……
    所以oracle不允许你这么做。看楼主的意思,是要将全表都更新为bbbaa了……
      

  4.   

    在触发器里加入 PRAGMA AUTONOMOUS_TRANSACTION; 我的也是类似情况,加上这句就可以了。