2 q494489482 q494489482 于 2017.09.11 12:12 提问

oracle 12c 下动态sql执行的问题

在存储过程中使用动态sql遇到了下述问题,向各位大佬求教……这个问题中的过程,在10G中运行没有问题,但是现在数据库升级了后,就产生了问题。
数据库版本12.1.0.2.0

我在存储过程中,使用了动态sql,目的是统计数据。动态sql大概如下,prm_con 是入参,

SELECT SEQ_table_1_ACE100.NEXTVAL INTO V_ACE100 FROM DUAL;
v_sql := 'insert into table1
            select t2.columns1,
                   t2.columns2,
                   :1,
                   ROW_NUMBER() OVER(ORDER BY columns1) AS XH
              from table2 t2,view1 v1
             where t2.columns3 = v1.columns3
               and ' || prm_con;

EXECUTE IMMEDIATE V_SQL USING v_ace100;

问题是这段sql,执行后, ROW_NUMBER()产生的数值没有写入到表中。而这段sql如果我自己直接执行,是可以插入的。

下面的截图是调试过程的结果
图片说明

下面的截图是手动执行sql的结果
图片说明

Csdn user default icon
上传中...
上传图片
插入图片