我正在研究一个需要非常自动化的Oracle过程,所以我使用的是动态SQL.我是新手使用动态SQL.
我正在使用varchar2变量来构建需要执行的SQL.我已经使用dbms_output来捕获正在生成的SQL,并且执行正常:
sql创建Basket Swap table = CREATE TABLE INBOUND.BASKET_CTAS_SWP COMPRESS FOR QUERY HIGH as SELECT*FROM INBOUND.BASKET_FCT PARTITION(SYS_1234);
但是,当我使用它执行该过程时,它会生成以下错误
Execute MyProcedure;
Run Code Online (Sandbox Code Playgroud)
谢谢你的任何指导!
oracle版本:Oracle Database 11g企业版版本11.2.0.3.0 - 64位生产
IDE:Oracle SQL Developer版本4.0.2.15 Build 15.21
码:
note: all variables set at beginning of procedure...
Sqlexec:= 'CREATE TABLE ' || Basket_Swap_Schema || '.' || Basket_Swap_Table_Name || ' ';
Sqlexec:= Sqlexec || 'COMPRESS FOR QUERY HIGH ';
Sqlexec:= Sqlexec || 'AS SELECT * FROM ' || Basket_Source_Schema_Name || '.' || Basket_Source_Table_Name || ' ';
Sqlexec:= Sqlexec …Run Code Online (Sandbox Code Playgroud)