首页 文章

Oracle:消除错误

提问于
浏览
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);

我收到这样的错误 .

ERROR at line 2: ORA-06550: line 2, column 1: PLS-00103: Encountered the symbol "SELECT" when expecting one of the following: begin function package pragma procedure subtype type use form current cursor

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

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 .

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

相关问题