Oracle:消除错误

时间:2011-01-10 06:40:55

标签: sql database oracle oracle9i ora-06550

我有假日表,其描述为

   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”:   开始函数包编译指示程序子类型使用     形成   当前光标

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

1 个答案:

答案 0 :(得分: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。

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