我想输入一个日期并使用 PL/SQL 将其存储到一个变量中,但收到 PL-00201 错误

I would like to input a date and store it into a variable using PL/SQL but recieve PL-00201 error

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

PLS-00201: identifier 'SEP' must be declared.

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;

对有帮助的人,我已经解决了

我需要用单引号将输入字符串括起来,然后在输出上使用 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;

尽管您这样做了,但我建议您不要依赖隐式数据类型转换。 '&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>