execute immediate 使用同一条动态更新语句,绑定变量不同,只更新最新的一条

ORACLE

--创建表

create table  test 
(
    text  clob,
sub   varchar(10),
sub2  varchar(10)
);

--在表中插入数据

insert  test into values 
('select  id,name from cn_student_cnm','RRR','XXX');


---创建过程 
create or replace procedure  pro_test  as
 v_sql  clob;
 v_sql2 clob;
 v_text  text.text%type;
 v_sub  text.sub%type;
 v_sub2  text.sub2%type;
begin
    select  text,sub,sub2  into  v_text, v_sub,v_sub2   from test ;

 v_sql :='update test set text = replace(:1,''id'',:2)';
 v_sql2 :='update test set text = replace(:1,''name'',:2)';

 execute immediate v_sql using  v_text,v_sub;
 commit;

 execute immediate v_sql2 using v_text,v_sub2;
 commit;

end;
执行后,预期中,两次更新,最后,text 字段中的值,应该是:

select  RRR,XXX from cn_student_cnm;


但是实际执行结果是 :select  id,XXX from cn_student_cnm;

两个execute中,只会最后一个有效。

求大神们帮忙看看,这是为什么,要怎么改,才能两个都更新呢 ?
查看全部
qq_44614694
斐�
2019/01/24 10:14
  • oracle
  • sql
  • 点赞
  • 收藏
  • 回答
    私信
满意答案
查看全部

1个回复