我是甲骨文的新手;请帮助我尝试运行基于日期提取记录的查询;
如果日期是星期一,查询应该运行三次;即周一、周日、周六(前几天也一样)其他日子(周二至周四仅限同一天);
我是甲骨文的新手;请帮助我尝试运行基于日期提取记录的查询;
如果日期是星期一,查询应该运行三次;即周一、周日、周六(前几天也一样)其他日子(周二至周四仅限同一天);
首先,如果您想运行查询三次,则需要以非普通方式执行此操作SQL: PL-SQL, Java, C#, something.
但是,如果您希望将周六和周日的数据包含在周一的数据中,您需要执行 CASE 声明之类的操作,将周六和周日更改为周一。
case when (trim(to_char((date), 'Day', 'NLS_DATE_LANGUAGE=ENGLISH'))
in ('Saturday', 'Sunday', 'Monday')) then 'Monday'
else trim(to_char((date), 'Day', 'NLS_DATE_LANGUAGE=ENGLISH'))
end
我正在尝试运行一个查询,该查询根据日期提取记录
对于基于日历的调度,Oracle 提供了DBMS_SCHEDULER。
例如,以下作业将每小时执行一次:
SQL> BEGIN
2 DBMS_SCHEDULER.DROP_JOB (JOB_NAME => 'test_full_job_definition');
3 END;
4 /
PL/SQL procedure successfully completed.
SQL>
SQL> BEGIN
2 DBMS_SCHEDULER.create_job (
3 job_name => 'test_full_job_definition',
4 job_type => 'PLSQL_BLOCK',
5 job_action => 'BEGIN my_job_procedure; END;',
6 start_date => SYSTIMESTAMP,
7 repeat_interval => 'freq=hourly; byminute=0; bysecond=0;',
8 end_date => NULL,
9 enabled => TRUE,
10 comments => 'Job defined entirely by the CREATE JOB procedure.');
11 END;
12 /
PL/SQL procedure successfully completed.
SQL>
SQL> SELECT JOB_NAME, ENABLED FROM DBA_SCHEDULER_JOBS where job_name ='TEST_FULL_JOB_DEFINITION'
2 /
JOB_NAME ENABL
---------------------------------------- -----
TEST_FULL_JOB_DEFINITION TRUE
SQL>
更多示例在这里