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" が検出されました: begin function package pragma procedure サブタイプ タイプ use form current cursor

私のコードの問題は誰に教えてもらえますか?

4

1 に答える 1

4
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;

これにより、時間の部分が切り取られ、日付全体がチェックされます。テーブルに日付全体も含まれている場合は、結果が得られる可能性が高くなります。そうでない場合、デュアルからの選択はそれをキャプチャし、aNULL を返すようにします。

現在発生する可能性がある唯一のエラーは、同じ日付を含むレコードが複数ある場合です。

于 2011-01-10T06:42:39.530 に答える