Oracle: устранить ошибку - PullRequest
0 голосов
/ 10 января 2011

У меня есть праздничный стол, описание которого

   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: Обнаружен символ «ВЫБОР» при ожидании одного из следующих действий.: начало функциональный пакет прагма тип процедуры подтип использовать форму текущий курсор

Может кто-нибудь сказать мне, в чем проблема в моем коде?

1 Ответ

4 голосов
/ 10 января 2011
declare 
  a date;
begin
  select holidaydate into a from holiday where holidaydate = sysdate;
  dbms_output.put_line(a);
end;

Но это, вероятно, даст вам новую ошибку (данные не найдены), потому что, вероятно, нет записи, в которой Sysdate введен в Holidaydate, поскольку sysdate также включает время.

Так попробуйте это:

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

  dbms_output.put_line(a);
end;

Это отрезает часть времени, проверяя целые даты. Если в вашей таблице также есть целые даты, это, скорее всего, даст результат. Если нет, то выбор из двойного захватит это и заставит a вернуть NULL.

Единственная ошибка, которую вы можете получить сейчас, это когда несколько записей содержат одну и ту же дату.

...