【问题标题】:I would like to input a date and store it into a variable using PL/SQL but recieve PL-00201 error我想输入一个日期并使用 PL/SQL 将其存储到一个变量中,但收到 PL-00201 错误
【发布时间】:2021-09-24 00:34:45
【问题描述】:

我正在尝试输入日期,即 18-Sep-09 并将其存储到 v_today。但我收到了

PLS-00201:必须声明标识符“SEP”。

SET  SERVEROUTPUT  ON

DECLARE

v_today DATE :=TO_DATE(&today,'YY-MMM-DD');
v_tomorrow v_today%TYPE :=today+1;

BEGIN
DMBS_OUTPUT.PUT_LINE('Today is: '|| v_today);
DMBS_OUTPUT.PUT_LINE('Tomorrow will be: '|| v_tomorrow);
END;

【问题讨论】:

    标签: oracle date plsql


    【解决方案1】:

    虽然您这样做了,但我建议您不要依赖隐式数据类型转换。 '&today' 是字符串,而不是日期。考虑按以下方式进行操作,使用适当的格式掩码应用 to_date(和 to_char,就像你已经做过的那样):

    SQL> DECLARE
      2    v_today    DATE         := to_date('&today', 'dd.mm.yyyy');
      3    v_tomorrow v_today%TYPE := v_today + 1;
      4  BEGIN
      5    DBMS_OUTPUT.PUT_LINE('Today is        : '|| TO_CHAR(v_today, 'DAY'));
      6    DBMS_OUTPUT.PUT_LINE('Tomorrow will be: '|| TO_CHAR(v_tomorrow,'DAY'));
      7  END;
      8  /
    Enter value for today: 24.09.2021
    Today is        : FRIDAY
    Tomorrow will be: SATURDAY
    
    PL/SQL procedure successfully completed.
    
    SQL>
    

    【讨论】:

      【解决方案2】:

      对于我已经整理出来的任何人有帮助

      我需要将输入字符串用单引号括起来,然后在输出上使用 TO_CHAR 函数。

      SET  SERVEROUTPUT  ON
      
      DECLARE
      
      v_today DATE :='&today';
      v_tomorrow v_today%TYPE :=v_today+1;
      
      BEGIN
      DBMS_OUTPUT.PUT_LINE('Today is: '|| TO_CHAR(v_today, 'DAY'));
      DBMS_OUTPUT.PUT_LINE('Tomorrow will be: '|| TO_CHAR(v_tomorrow,'DAY'));
      END;
      
      

      【讨论】:

        猜你喜欢
        • 2016-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多