【发布时间】:2012-02-27 16:04:52
【问题描述】:
您能帮我在 PL/SQL 中为存储过程创建二维数组吗?这些列是动态的,因此它也可以增长和改变类型。 任何帮助表示赞赏。提前谢谢!
我有以下代码:
Type CAR_TABLE_ARRAY is varray(2) of varchar2(255);
TYPE CAR_TABLE_TYPE IS TABLE OF CAR_TABLE_ARRAY;
CAR_TABLE CAR_TABLE_TYPE;
CAR_TABLE := CAR_TABLE_TYPE();
CAR_TABLE.EXTEND(10);
CAR_TABLE(1)(1) := 'DODGE';
CAR_TABLE(2)(1) := 'FORD';
CAR_TABLE(3)(1) := 'MUSTANG';
CAR_TABLE(4)(1) := 'EDSEL';
CAR_TABLE(5)(1) := 'STUDEBAKER';
DBMS_OUTPUT.put_line( '1 ' || CAR_TABLE(1)(1) );
DBMS_OUTPUT.put_line( '2 ' || CAR_TABLE(2)(1) );
DBMS_OUTPUT.put_line( '3 ' || CAR_TABLE(3)(1) );
DBMS_OUTPUT.put_line( '4 ' || CAR_TABLE(4)(1) );
DBMS_OUTPUT.put_line( '5 ' || CAR_TABLE(5)(1) );
运行时出现以下错误:
ORA-06531:对未初始化集合的引用
【问题讨论】:
-
二维数组在数学上只是一个映射 (X, Y) -> VALUE。那么,如何在 PL/SQL 中创建一个包含 3 列 X、Y、VALUE 的临时表?
-
嗨 BycycleDude,感谢您的回复。但是我认为我无法创建临时表,因为列需要是动态的,因此它可以更改其列类型和列数。
-
简单,只需创建一个
TYPE列并创建许多可为空的VALUE列,然后只设置您需要的一个:X、Y、TYPE、VALUE_FLOAT、VALUE_STRING、VALUE_TIMESTAMP、VALUE_BLOB、。 ..