CREATE OR REPLACE PROCEDURE insert_test1
as
  v_date varchar2(50);
  v_sql varchar(2000);
  begin 
  select to_char(sysdate-1/(60*24),'yyyyMMddHHmi') INTO v_date from dual;--查询当前时间的前一分钟
   v_sql:='create table view_test_'||v_date||' as(select count(1) js from g_test)';--组成SQL创建表
  EXECUTE IMMEDIATE v_sql;
  commit;
end;
上面这个存储过程为什么是错的?能编译过去,但是执行不了,我直接拿出来.declare
  v_date varchar2(50);
  v_sql varchar(2000);
  begin 
  select to_char(sysdate-1/(60*24),'yyyyMMddHHmi') INTO v_date from dual;--查询当前时间的前一分钟
   v_sql:='create table view_test_'||v_date||' as(select count(1) js from g_test)';--组成SQL创建表
  EXECUTE IMMEDIATE v_sql;这样执行是对的~~

解决方案 »

  1.   

    怎么就执行不了?17:01:23 @ > conn / as sysdba
    已连接。
    17:01:28 SYS@tdwora > grant create any table to scott;授权成功。17:01:29 SYS@tdwora > conn scott/bee56915
    已连接。
    17:01:37 SCOTT@tdwora > CREATE OR REPLACE PROCEDURE insert_test1
    17:01:50   2  as
    17:01:50   3    v_date varchar2(50);
    17:01:50   4    v_sql varchar(2000);
    17:01:50   5    begin
    17:01:50   6    select to_char(sysdate-1/(60*24),'yyyyMMddHHmi') INTO v_date from dual;--查询当前时间的前一分钟
    17:01:50   7    v_sql:='create table view_test_'||v_date||' as select count(1) js from g_test';--组成SQL创建表
    17:01:50   8    EXECUTE IMMEDIATE v_sql;
    17:01:50   9    commit;
    17:01:50  10  end;
    17:01:50  11  /SP2-0804: 过程已创建, 但带有编译警告17:01:52 SCOTT@tdwora > exec insert_test1;PL/SQL 过程已成功完成。17:02:53 SCOTT@tdwora > select table_name from user_tables where table_name like 'VIEW%';VIEW_TEST_20120921050017:03:16 SCOTT@tdwora > SELECT * FROM VIEW_TEST_201209210500;         217:03:33 SCOTT@tdwora > set heading of
    SP2-0265: heading 必须设置为 ON 或 OFF
    17:04:02 SCOTT@tdwora > set heading on
    17:04:05 SCOTT@tdwora > SELECT * FROM VIEW_TEST_201209210500;        JS
    ----------
             2
      

  2.   

    现在我存储过程能执行了,但是我的JOB一直执行失败是什么原因?前面是因为我执行存储过程没有权限
      

  3.   

    JOB 错误
    ORA-12011:无法执行1作业
    ORA_06512:在“SYS.DBMS_IJOB”, line 651
    ORA_06512:在“SYS.DBMS_JOB”, line 294
    ORA_06512:在 line 2
    --------------------------------------------------
    我创建JOB 的时候就  what 里面填写了 上面那个存储过程
    然后间隔填写为SYSDATE + 1/(60*24)