你並不需要初始化記錄類型的變量:如果您使用的卻記錄嵌套表
SQL> DECLARE
2 TYPE typ_rec IS RECORD (a NUMBER, b NUMBER);
3 rec typ_rec;
4 BEGIN
5 rec.a := 1;
6 rec.b := 2;
7 dbms_output.put_line(rec.a + rec.b);
8 END;
9/
3
PL/SQL procedure successfully completed
,你需要初始化集合:
SQL> DECLARE
2 TYPE typ_rec IS RECORD (a NUMBER, b NUMBER);
3 TYPE typ_tab IS TABLE OF typ_rec;
4 tab typ_tab := typ_tab(); -- initialization
5 BEGIN
6 tab.extend;
7 tab(1).a := 1;
8 tab(1).b := 2;
9 dbms_output.put_line(tab(1).a + tab(1).b);
10 END;
11/
3
PL/SQL procedure successfully completed
你可以混合記錄類型和集合類型(varrays不需要初始化):
SQL> DECLARE
2 TYPE column_info IS RECORD(
3 col_name VARCHAR2(20),
4 col_value VARCHAR2(1000)
5 );
6 TYPE c_info IS VARRAY(10) OF column_info;
7 TYPE table_info IS RECORD(
8 table_name VARCHAR2(20),
9 col_info c_info
10 );
11 l_table table_info;
12 BEGIN
13 l_table.table_name := 'TABLE_NAME';
14 l_table.col_info.extend;
15 l_table.col_info(1).col_name := 'COL_NAME';
16 l_table.col_info(1).col_value := 'COL_VALUE';
17 END;
18/
PL/SQL procedure successfully completed
閱讀:PL/SQL collection documentation
正如你所看到的,這個strusture的第二個成員是一個集合類型column_info是記錄(col_name varchar2(20),col_value varchar2(1000)); 類型c_info是column_info的varray(10);當我給col_value賦值時,像這樣:t_info.col_info(1).col_name:='table_idx';我得到ORA-06531:引用未初始化的集合 – user1540471 2013-03-06 13:43:27
請編輯您的問題,而不是在評論中添加信息。 – 2013-03-06 13:46:47