我们在Oracle中使用 execute immediate来执行insert ,如果此时要return 某一字段的值,怎么获得,例如
declare
   i varchar2(20);
   tmpstr varchar2(2000);
begin
 tmpstr :='insert into dt_user(id)values(11) return id into '||i;
 execute immediate tmpstr into i;
 dbms_output.put_line(i);
end;
有没有懂得呢。。

解决方案 »

  1.   

    你要返回的值在你进行insert 之前不时就已经有了嘛,
    还要返回什么?
      

  2.   

    使用关键字 RETURNING ,代码如下:
    declare
      i varchar2(20);
      tmpstr varchar2(2000);
    begin
    tmpstr :='insert into y(id)values(11) return id into :1';
    execute immediate tmpstr RETURNING  into i;
    dbms_output.put_line(i);
    end; 
      

  3.   


    还可以返回其他字段如下:declare
      i      varchar2(20);
      tmpstr varchar2(2000);
    begin
      tmpstr := 'update a set id=4 where id=3 returning content into :1';
      execute immediate tmpstr
        returning into i;
      dbms_output.put_line(i);
    end;