2011-01-10 285 views
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); 

我收到這樣的錯誤。 ORA-06550::行2,列1: PLS-00103:

在第2行ERROR出現符號 「SELECT」 在需要下列之一時: 開始功能包編譯程序亞型類型使用 形式 當前光標

任何人都可以告訴我什麼是我的代碼中的問題?

回答

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

但是,這可能會給你一個新的錯誤(沒有找到數據),因爲有可能是沒有任何記錄表明有系統日期中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。

您現在可能得到的唯一錯誤是當有多個記錄包含相同的日期。

+2

+1:這被稱爲匿名PLSQL塊,由'BEGIN`和`END`關鍵字表示。 – 2011-01-10 06:47:12