集合类型。有三种、索引表、嵌套表、可变数组。 你的语句声明的是一个索引表类型,相当于其它高级语言中的数组。 声明格式: type <类型名> is table of <元素类型> index by <下标类型>; SQL> SET SERVEROUTPUT ON; SQL> SQL> SQL> DECLARE 2 --声明一个索引表类型t_arr 3 TYPE t_arr IS TABLE OF VARCHAR(10) INDEX BY PLS_INTEGER; 4 --声明一个t_arr变量 5 v_arr t_arr; 6 BEGIN 7 --循环给v_arr各元素赋值 8 FOR i IN 1 .. 10 LOOP 9 v_arr(i) := 'element:' || i; 10 END LOOP; 11 12 --循环输出v_arr各元素的值 13 FOR i IN 1 .. v_arr.count LOOP 14 dbms_output.put_line(v_arr(i)); 15 END LOOP; 16 END; 17 / element:1 element:2 element:3 element:4 element:5 element:6 element:7 element:8 element:9 element:10PL/SQL 过程已成功完成。SQL>
TYPE t_arr IS TABLE OF VARCHAR(10) INDEX BY PLS_INTEGER; 这是一个集合数组,数组的元素在后面定义给出, 相当与c++里面的动态数组,定义时不限制其长度,在初始化时才为其赋值。 需要注意的是,oracle里面的集合数组的下标是从1开始的,而c++,java,c#里面的数组下标都是从0开始的
这是PL/SQL中的一个复合变量类型,记录表类型。一个记录表类型变量可以存储查询语句返回的多行数据,可以理解为Java等程序设计语言中的单行数组。 淡然你也可以为其赋值:如: Declare TYPE T_ARRAY IS TABLE OF VARCHAR2(50) INDEX BY BINARY_INTEGER; begin TGT_TBL(1) := 'A'; TGT_TBL(2) := 'B'; TGT_TBL(3) := 'C';[code=SQL] ... ... end;[/code还有另一种复合变量,叫记录类型] type record_name is RECORD(field1 data_type, ....) 是用来返回一行多列的数据的。 详细参考PL/SQL 复合变量 的内容
你的语句声明的是一个索引表类型,相当于其它高级语言中的数组。
声明格式:
type <类型名> is table of <元素类型> index by <下标类型>;
SQL> SET SERVEROUTPUT ON;
SQL>
SQL>
SQL> DECLARE
2 --声明一个索引表类型t_arr
3 TYPE t_arr IS TABLE OF VARCHAR(10) INDEX BY PLS_INTEGER;
4 --声明一个t_arr变量
5 v_arr t_arr;
6 BEGIN
7 --循环给v_arr各元素赋值
8 FOR i IN 1 .. 10 LOOP
9 v_arr(i) := 'element:' || i;
10 END LOOP;
11
12 --循环输出v_arr各元素的值
13 FOR i IN 1 .. v_arr.count LOOP
14 dbms_output.put_line(v_arr(i));
15 END LOOP;
16 END;
17 /
element:1
element:2
element:3
element:4
element:5
element:6
element:7
element:8
element:9
element:10PL/SQL 过程已成功完成。SQL>
这是一个集合数组,数组的元素在后面定义给出,
相当与c++里面的动态数组,定义时不限制其长度,在初始化时才为其赋值。
需要注意的是,oracle里面的集合数组的下标是从1开始的,而c++,java,c#里面的数组下标都是从0开始的
淡然你也可以为其赋值:如:
Declare
TYPE T_ARRAY IS TABLE OF VARCHAR2(50) INDEX BY BINARY_INTEGER;
begin
TGT_TBL(1) := 'A';
TGT_TBL(2) := 'B';
TGT_TBL(3) := 'C';[code=SQL]
...
...
end;[/code还有另一种复合变量,叫记录类型]
type record_name is RECORD(field1 data_type,
....)
是用来返回一行多列的数据的。
详细参考PL/SQL 复合变量 的内容