0

我需要通过增加日期来基于一个日期值分配多个日期值。

以下代码是一个示例。但它会引发错误。我错了请指教。

   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

您可以使用 plsql 集合来分配日期值而不是 100 个变量

于 2012-11-27T11:10:15.090 回答
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

您不能动态形成变量名称,创建日期数组并递增和分配值。 试试这个链接

issueate_||cnt := issueate +cnt;--问题在粗体部分

样本 :

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 回答