-3

我是甲骨文的新手;请帮助我尝试运行基于日期提取记录的查询;

如果日期是星期一,查询应该运行三次;即周一、周日、周六(前几天也一样)其他日子(周二至周四仅限同一天);

4

2 回答 2

0

首先,如果您想运行查询三次,则需要以非普通方式执行此操作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
于 2015-06-08T03:14:36.153 回答
0

我正在尝试运行一个查询,该查询根据日期提取记录

对于基于日历的调度,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>

更多示例在这里

于 2015-06-08T04:48:35.680 回答