2017-02-16 10 views
0

これが発生したコードoracleで特定のselectステートメントを3回印刷するにはどうすればよいですか?

declare 
a integer; 
begin 
    select to_char(to_date('1/1/2017 ','mm/dd/yyyy') + level -1) into a from dual 
    connect by level <=365; 
    for a in 1..3 loop 
    dbms_output.put_line(a); 
    end loop; 
end; 

エラーが正確な行 のない要求された以上にフェッチされていないあなたはスケーラ変数に複数の値を取得しようとしている

答えて

0

を助けてください。

これを試してみてください:すべての

begin 
    for i in (select to_char(to_date('1/1/2017 ','mm/dd/yyyy') + level -1) col 
        from dual 
        connect by level <=365) loop 
     for j in 1..3 loop 
      dbms_output.put_line(i.col); 
     end loop; 
    end loop; 
end; 
/
+0

ありがとうございます。 – Abhijith

0

第一、あなたは整数として「」変数を宣言したが、その後、あなたがそれにVARCHAR2を割り当てることを事実について注意してください。 第2、あなたのコードをテストしていたところ、level <= 365に問題があるようです。 level = 365に変更しましたが、期待した結果が返ってきたようです。

declare 
a integer; 
begin 
    select to_char(to_date('1/1/2017 ','mm/dd/yyyy') + level -1) into a from dual 
    -- connect by level <= 365; 
    connect by level = 365; 
    for a in 1..3 loop 
    dbms_output.put_line(a); 
    end loop; 
end; 
関連する問題