如何在oracle中,每天早上5点建立一张表

来源:百度知道 编辑:UC知道 时间:2024/09/28 12:26:32
我想每天早上5点的时候,在oracle 数据库中建立如下面语句的一张表

create talbe xin20090201 as ----表名字为 xin+年月日
select * from moba

请问如何实现.好象要通过存储过程,我看了2天书也没看明白.请高人指点
请详细写下代码,好么?

create or replace PROCEDURE SP_CREATE_TABLE
(
on_flag OUT NUMBER,
out_reason OUT VARCHAR2
)
is
v_sql varchar2(2000);
v_now_date varchar2(8);
v_table_name varchar2(3);

begin

select to_char(sysdate,'yyyymmdd') into v_now_date from dual;
select 'xin' into v_table_name from dual;

v_sql :='create table '||v_table_name||''||v_now_date||'';
v_sql :=v_sql || ' as select * from moba';
EXECUTE IMMEDIATE v_sql;
commit;

EXCEPTION
WHEN OTHERS
THEN
on_flag := SQLCODE;
out_reason := SUBSTR (SQLERRM, 1, 255);
ROLLBACK;
END;

运行前执行:(用你拥有dba权限的用户授权,否则可能将来运行时会报错)
grant create any table to 用户;

grant create procedure to 用户;

至于每天5点启动,那你就用job调用吧,还用再教么?

用job
建个存储过程,用来执行创建表的语句
建job定时调用该存储过程

SQL Server里有作业。没用过oracle ..应该差不多吧