怎样能执行V_SQL里的语句?
DELETE FROM TBT_T ;
COMMIT;
FOR CN IN (SELECT DISTINCT GN_ID , SQL_SELECT
FROM B ) LOOP
V_SQL:=CN.SQL_SELECT ;
FOR C IN (select distinct GN_ID,CSMC,RET_MRZ(MRZ) MRZ
from A) LOOP
V_SQL:=(REPLACE(V_SQL,C.CSMC,C.MRZ );
END LOOP;
INSERT INTO TBT_T VALUES(CN.GN_ID,V_SQL);
END LOOP;
COMMIT;
DELETE FROM TBT_T ;
COMMIT;
FOR CN IN (SELECT DISTINCT GN_ID , SQL_SELECT
FROM B ) LOOP
V_SQL:=CN.SQL_SELECT ;
FOR C IN (select distinct GN_ID,CSMC,RET_MRZ(MRZ) MRZ
from A) LOOP
V_SQL:=(REPLACE(V_SQL,C.CSMC,C.MRZ );
END LOOP;
INSERT INTO TBT_T VALUES(CN.GN_ID,V_SQL);
END LOOP;
COMMIT;
你的v_sql不是动态的 就是一赋值的写法
把V_SQL:=(REPLACE(V_SQL,C.CSMC,C.MRZ ); 改成
select REPLACE(V_SQL,C.CSMC,C.MRZ) into V_SQL
--动态执行这样的dml语句
execute immediate 'insert into tb values(1)';