一个很简单的SQL语句,帮忙写下

guan323333 2012-01-09 12:53:08
CREATE TABLE TEMP NOLOGGING AS
SELECT A.*,
FROM date_20111226 a
WHERE TYPE5='离子' AND ACC_NAME LIKE '%3%' ;
commit;

想把上面这段话写成一个过程,date_20111226 这个是个变量,每周跑一次,下一次在26+7号,这一天,

怎么写成
DECLARE
sql_1 varchar2(100);
BEGIN
sql_1:='CREATE TABLE TEMP NOLOGGING AS
SELECT A.*,
FROM date_'||to_char((sysdate-1),'yyyymmdd')||' a
WHERE TYPE5='离子' AND ACC_NAME LIKE '%3%' ;
END;

这样啊,问题在于where后面那个条件应该怎么写,whERE TYPE5='离子' AND ACC_NAME LIKE '%3%' ;

本人小菜鸟,知道的人解答下哈

...全文
191 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿木王 2012-01-10
  • 打赏
  • 举报
回复
支持3楼意见,定个job跑,在这个job里创建一个触发器
create trigger trigger_temp
on date_20111226
when to_char(sysdate,'DAY HH24:MI:SS')=='MONDAY 19:30:00' --设置每周触发具体时间
begin
--触发的事件,比如调用3楼的存储过程
call proc_test(date_20111226);
end trigger_temp;
ICE-word 2012-01-09
  • 打赏
  • 举报
回复
create or replace procedure proc_test
(
table_name in varchar2, --表名
) as
str_sql varchar2(500);
begin
str_sql:= 'SELECT A.*,
FROM ''||table_name|| a
WHERE TYPE5='离子' AND ACC_NAME LIKE '%3%' ;';
execute immediate str_sql; --动态执行DDL语句
exception when others then
null;
end;

至于每周跑一次,下一次在26+7号,这一天 你可以定个JOB跑
qinglang1987 2012-01-09
  • 打赏
  • 举报
回复
定义个变量下面这样写吧:
CREATE TABLE TEMP NOLOGGING AS
SELECT A.*,
FROM date_20111226 a
WHERE TYPE5=:变量 AND ACC_NAME LIKE '%3%' ;

geniuswjt 2012-01-09
  • 打赏
  • 举报
回复
这种表名当变量的估计要用到动态sql

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧