我指的是以下内容:
Oracle speaks SQL 及其过程扩展,PL/SQL。我不是在谈论 Java 或不同的预编译器,因为我对这些或 JavaScript(您可以在 Oracle Apex 中使用)了解不多(或者我应该说任何东西)。
所以,如果你想让某事发生,你必须付出一些努力并使用 SQL 或 PL/SQL 编写一些代码。像days.sunday 这样的“枚举器”不能凭空存在。
在阅读了您发布的 cmets 之后,我理解问题的方式导致了这个选项:带有一堆简单函数的 PL/SQL 包。实现并不复杂,使用也很简单。看看有没有帮助。
首先,我将设置环境,以便星期日是第 1 天(在我的国家,星期一是第 1 天)。
SQL> alter session set nls_territory = 'INDIA';
Session altered.
SQL> alter session set nls_date_language = 'english';
Session altered.
SQL> select to_char(date '2020-05-31', 'd' ) day_number,
2 to_char(date '2020-05-31', 'day') day_name
3 from dual;
D DAY_NAME
- ---------
1 sunday
SQL>
好的;这是 2020 年 5 月 31 日的最后一个星期日。现在,包裹:
SQL> create or replace package days as
2 function sunday return number;
3 function monday return number;
4 function tuesday return number;
5 function wednesday return number;
6 function thursday return number;
7 function friday return number;
8 function saturday return number;
9 end;
10 /
Package created.
SQL> create or replace package body days as
2 function sunday return number is begin return 1; end;
3 function monday return number is begin return 2; end;
4 function tuesday return number is begin return 3; end;
5 function wednesday return number is begin return 4; end;
6 function thursday return number is begin return 5; end;
7 function friday return number is begin return 6; end;
8 function saturday return number is begin return 7; end;
9 end;
10 /
Package body created.
SQL>
看起来很简单,你不觉得吗?
最后,让我们按照您评论的方式使用它(注意第 4 行):
SQL> set serveroutput on
SQL>
SQL> declare
2 day number := to_char(date '2020-05-31', 'd');
3 begin
4 if day = days.sunday then
5 dbms_output.put_line('It is Sunday');
6 else
7 dbms_output.put_line('It is not Sunday');
8 end if;
9 end;
10 /
It is Sunday
PL/SQL procedure successfully completed.
SQL>