Oracle11g oracle 11g中的字符和IF语句

Oracle11g oracle 11g中的字符和IF语句,oracle11g,Oracle11g,我试图存储日期,然后在if语句中使用它,但它不起作用 它跳过了if all select TO_CHAR(sysdate, 'DAY') into v_today from dual ; // save the day to v_today if v_today <> 'SUNDAY' or v_today <> 'SATURDAY'// check for the vlaue of v_today then DBMS_OUTPUT.P

我试图存储日期,然后在if语句中使用它,但它不起作用

它跳过了if all

 select TO_CHAR(sysdate, 'DAY')  into v_today from dual ; // save the day to v_today

  if v_today <> 'SUNDAY'  or  v_today <> 'SATURDAY'// check for the vlaue of v_today
  then
         DBMS_OUTPUT.PUT_LINE('the office is open') ;
  else
         DBMS_OUTPUT.PUT_LINE('the  office is close of the weekend') ; 
  end if;
选择将字符(sysdate,'DAY')从dual转换为v_today;//今天就把这一天留给你
如果v_今天是“星期日”或v_今天是“星期六”//检查v_今天的值
然后
DBMS_OUTPUT.PUT_LINE('办公室是开放的');
其他的
DBMS_OUTPUT.PUT_LINE(“周末办公室关门”);
如果结束;

首先,您几乎肯定希望使用格式掩码
fmDAY
,而不仅仅是
DAY
DAY
始终返回9个字符的字符串(假设会话设置为使用英语)。如果这一天不是星期三,那将是一个充满空间的日子。
fmDAY
格式掩码删除空格填充

其次,你的IF条件几乎肯定是不正确的。如果今天的
v_
不是
NULL
,则
If
条件将计算为
TRUE
。例如,如果
v_today
SATURDAY
,那么
v_today“SUNDAY”
将计算为TRUE。由于
TRUE或FALSE
的计算结果为
TRUE
,因此
IF
条件的计算结果为
TRUE
。我想你也想要

IF( v_today IN ('SATURDAY', 'SUNDAY' ))

执行此过程 将服务器输出设置为ON 执行P_1

IF( v_today != 'SATURDAY' and v_today != 'SUNDAY' )
CREATE OR REPLACE PROCEDURE P_1
IS
    v_today varchar2(20);
  BEGIN
     SELECT TO_CHAR(SYSDATE,'DAY') INTO v_today FROM DUAL;
        if (v_today NOT IN('SATURDAY','SUNDAY')) THEN
                DBMS_OUTPUT.PUT_LINE('the office is open') ;
        ELSE
               DBMS_OUTPUT.PUT_LINE('the  office is close of the weekend') ;
 END IF;
 END;