create OR REPLACE PROCEDURE P_24308_1028 as
begin
v_tablename:='t_order_mast_24308_'||to_char(trunc(sysdate),'yyyymm');
v_sql:='create table'|| v_tablename || 'as select * from t_order_mast_24308'||';';
Execute?Immediate v_sql;
end?P_24308_1028;
执行 call P_24308_1028() ; 报错ora_06575错误
求教啊!!!
------解决思路----------------------
先申明类型
v_tablename varchar2(100);
v_sql varchar2(100);
------解决思路----------------------
-- 1 。 create table 和 表名加一个空格,
-- 2 。 最后的 分号,不要加到态 SQL 中。
SQL> create table t_order_mast_24308(id int ) ;
Table created
SQL> create OR REPLACE PROCEDURE P_24308_1028 as
2 v_sql varchar2(1000) ;
3 v_tablename varchar(30);
4 begin
5 v_tablename:='t_order_mast_24308_'
------解决思路----------------------
to_char(trunc(sysdate),'yyyymm');
6 v_sql:='create table '
------解决思路----------------------
v_tablename
------解决思路----------------------
' as select * from t_order_mast_24308';
7 Execute Immediate v_sql;
8 end P_24308_1028;
9 /
Procedure created
SQL> call P_24308_1028() ;
Method called
SQL> drop procedure P_24308_1028 ;
Procedure dropped
SQL> drop table t_order_mast_24308 ;
Table dropped
SQL> drop table t_order_mast_24308_201510 ;
Table dropped
SQL>