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;
这样执行是对的~~
------解决方案--------------------
- SQL code
怎么就执行不了?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_test117:01:50 2 as17:01:50 3 v_date varchar2(50);17:01:50 4 v_sql varchar(2000);17:01:50 5 begin17: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 ofSP2-0265: heading 必须设置为 ON 或 OFF17:04:02 SCOTT@tdwora > set heading on17:04:05 SCOTT@tdwora > SELECT * FROM VIEW_TEST_201209210500; JS---------- 2