-1

在 java 中:

Date d[] = new Date[2];
Date temp[] = {new Date(),new Date()};

在甲骨文中

temp date = (sysdate,sysdate);--it works 

但是如何将 temp 的大小定义为 2,就像我们在 java 代码中所做的那样。

4

1 回答 1

3

我不太确定我是否理解这个问题。您已将其标记为 PL/SQL,因此我假设您的“in Oracle”代码旨在成为语法正确的 PL/SQL 代码,但您发布的语法无效。

在 PL/SQL 中,您拥有三种不同类型的集合。您有嵌套表、关联数组和可变数组。您不会在编译时声明嵌套表或关联数组的大小——它们将使用它们需要的任何空间。您确实在编译时声明了可变数组的大小,因此您可以声明一个存储两个日期的可变数组。不过,我无法想象我会想要声明一个大小为 2 的 varray 而不是使用嵌套表的情况,因为将自己限制为 2 元素集合没有任何好处。但是,如果您愿意,可以像我在下面那样声明变量。

SQL> ed
Wrote file afiedt.buf

  1  declare
  2    -- Nested table
  3    type date_nt is table of date;
  4    -- Associative array
  5    type date_aa is table of date index by pls_integer;
  6    -- VArray
  7    type date_va is varray(2) of date;
  8    l_date_nt date_nt := date_nt( sysdate, sysdate );
  9    l_date_va date_va := date_va( sysdate, sysdate );
 10    l_date_aa date_aa;
 11  begin
 12    l_date_aa(1) := sysdate;
 13    l_date_aa(100) := sysdate;
 14* end;
 15  /

PL/SQL procedure successfully completed.
于 2012-11-27T17:44:16.657 回答