0

日付をインクリメントして、1 つの日付値に基づいて多くの日付値を割り当てる必要があります。

次のコードはサンプルです。しかし、それはエラーをスローします。私が間違っているところに親切にアドバイスしてください。

   DECLARE
     issuedate date:='27-JAN-12';
     issuedate_1 date;
     issuedate_2 date;
     issuedate_3 date;
   BEGIN
     for cnt in 1..5
     loop
       issuedate_||cnt := issuedate+cnt;
       DBMS_OUTPUT.PUT_LINE(cnt);
       DBMS_OUTPUT.PUT_LINE( issuedate_1);
       DBMS_OUTPUT.PUT_LINE( issuedate_2);
       DBMS_OUTPUT.PUT_LINE( issuedate_3);
     end loop;
   END;
4

3 に答える 3

0

変数名を動的に形成したり、日付の配列を作成したり、値を増やしたり割り当てたりすることはできません。 このリンクを試す

issueate_||cnt := issueate+cnt; -- 問題はBOLD部分にあります

サンプル :

SQL>   declare
  2  
  3        type date_aa is table of date index by pls_integer;
  4        l_date_aa date_aa;
  5        temp date:= to_date('27-mar-2012');
  6        buckets number:=5;
  7     begin
  8      for elem in 1 .. buckets loop
  9    select temp+1 into temp from dual;
 10    l_date_aa(elem) := temp;
 11    dbms_output.put_line(l_date_aa(elem));
 12    end loop;
 13    end;
 14  /

出力:

28-MAR-12
29-MAR-12
30-MAR-12
31-MAR-12
01-APR-12

PL/SQL procedure successfully completed
于 2012-11-27T11:33:09.003 に答える
0

これを試して

DECLARE
 issuedate date  ; 
 l_issuedate date;
 BEGIN
 issuedate := TO_DATE('27-JAN-12') ;
 for cnt in 0..5
 loop
   SELECT issuedate+cnt
     INTO l_issuedate
     FROM DUAL ;

   DBMS_OUTPUT.PUT_LINE(l_issuedate);

 end loop;
END;

出力:

27-JAN-12
28-JAN-12
29-JAN-12
30-JAN-12
31-JAN-12
01-FEB-12    
于 2012-11-27T11:22:26.107 に答える
0

plsql コレクションを使用して、100 個の変数の代わりに日付値を割り当てることができます

于 2012-11-27T11:10:15.090 に答える