分类: Oracle
2014-09-28 22:55:58
create or replace procedure p_borrow_bk
as
v_sql1 varchar(200);
begin
v_sql1:='create table cunhuo_'||to_char(sysdate,'yyyymmdd')||' as select * from cunhuo';
execute immediate v_sql1;
end;
出现的问题如下
1.首先在procedure中使用create语句是要用execute immediate的
2.to_char(sysdate,'yyyymmdd')格式化日期,如果用在execute immediate中,因为定义v_sql1时会有单引号,所以要把后面的格式变成双引号
to_char(sysdate,''yyyymmdd'') 。通用的表示方式应该是:遇到函数内单引号,改为两个单引号:trunc(sysdate-1,''mm'')
3. to_char(sysdate,''yyyymmdd'') 这种形式是编译通过了 可是在执行时报:ora-00922 选项缺失或无效的错误。
4.改为'||to_char(sysdate,'yyyymmdd')||' ora-00922的问题解决
5.这是执行时又报没有权限:加上create any table权限 问题解决