0

我有一张假期表,它的描述是

   Name                                      Null?    Type

 HOLIDAYDATE                                        DATE
 DESCRIPTION                                        VARCHAR2(20)

其中包含的数据是

HOLIDAYDA DESCRIPTION
--------- --------------------
19-JAN-11 to
17-JAN-11 to
10-JAN-11 a

这是我的代码:

DECLARE a date;
SELECT holidaydate 
  INTO a 
  FROM holiday 
 WHERE holidaydate = SYSDATE;
 DBMS_OUTPUT.PUT_LINE(a);

我收到这样的错误。

第 2 行出现错误:ORA-06550:第 2 行,第 1 列:PLS-00103:在预期以下情况之一时遇到符号“SELECT”:开始函数包杂注过程子类型类型使用当前光标

谁能告诉我我的代码有什么问题?

4

1 回答 1

4
declare 
  a date;
begin
  select holidaydate into a from holiday where holidaydate = sysdate;
  dbms_output.put_line(a);
end;

但这可能会给你一个新的错误(没有找到数据),因为可能没有在 Holidaydate 中输入 Sysdate 的记录,因为 sysdate 也包括时间。

所以试试这个:

declare 
  a date;
begin
  select 
    (select holidaydate from holiday where holidaydate = trunc(sysdate))
  into a 
  from dual;

  dbms_output.put_line(a);
end;

这将切断时间部分,检查整个日期。如果您的表中也有完整的日期,那么这更有可能给出结果。如果不是,则 select from dual 将捕获它,并a返回 NULL。

您现在可能遇到的唯一错误是有多个记录包含相同的日期。

于 2011-01-10T06:42:39.530 回答