全部博文(136)
分类: Oracle
2008-07-31 13:04:44
SQL> create type record_name as object ( id number(1), name varchar2(20)
)
2 / 类型已创建。
SQL> create type tnt_names is table of record_name
2 / 类型已创建。 |
-- 两次初始化
SQL> set serveroutput on
SQL> declare 2 nt_names tnt_names := tnt_names(); 3 begin 4 nt_names.extend; 5 nt_names(1) := record_name(null, null); 6 7 nt_names(1).id := 1; 8 nt_names(1).name := 'yuechaotian'; 9 10 dbms_output.put_line( 'id: ' || nt_names(1).id ); 11 dbms_output.put_line( 'name: ' || nt_names(1).name ); 12 end; 13 / id: 1 name: yuechaotian PL/SQL 过程已成功完成。 |
-- 一次初始化
SQL> declare 2 nt_names tnt_names := tnt_names(); 3 begin 4 nt_names.extend; 5 -- nt_names(1) := record_name(null, null); 6 7 nt_names(1).id := 1; 8 nt_names(1).name := 'yuechaotian'; 9 10 dbms_output.put_line( 'id: ' || nt_names(1).id ); 11 dbms_output.put_line( 'name: ' || nt_names(1).name ); 12 end; 13 / declare * ERROR 位于第 1 行: ORA-06530: 引用未初始化的组合 ORA-06512: 在 line 8 |
SQL> select * from v$version;
BANNER
---------------------------------------------------------------- Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod PL/SQL Release 10.2.0.1.0 - Production CORE 10.2.0.1.0 Production TNS for 32-bit Windows: Version 10.2.0.1.0 - Production NLSRTL Version 10.2.0.1.0 - Production SQL> drop type tnt_names;
类型已丢弃。
SQL> create or replace type record_name as object (
2 id number(1), name number(1) )
3 / 类型已创建。
SQL> create type tnt_names is table of record_name
2 / 类型已创建。
SQL> declare
2 nt_names tnt_names := tnt_names(); 3 begin 4 nt_names.extend; 5 -- nt_names(1) := record_name(null, null); 6 7 nt_names(1).id := 1; 8 nt_names(1).name := 2; 9 10 dbms_output.put_line( 'id: ' || nt_names(1).id ); 11 dbms_output.put_line( 'name: ' || nt_names(1).name ); 12 end; 13 / id: 1 name: 2 PL/SQL 过程已成功完成。
|
SQL> select * from v$version;
BANNER
----------------------------------------------------------- Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production PL/SQL Release 9.2.0.1.0 - Production CORE 9.2.0.1.0 Production TNS for 32-bit Windows: Version 9.2.0.1.0 - Production NLSRTL Version 9.2.0.1.0 - Production SQL> drop type tnt_names;
类型已丢弃。
SQL> create or replace type record_name as object (
2 id number(1), name number(1) )
2 / 类型已创建。
SQL> create type tnt_names is table of record_name
2 / 类型已创建。
SQL> declare 2 nt_names tnt_names := tnt_names(); 3 begin 4 nt_names.extend; 5 -- nt_names(1) := record_name(null, null); 6 7 nt_names(1).id := 1; 8 nt_names(1).name := 2; 9 10 dbms_output.put_line( 'id: ' || nt_names(1).id ); 11 dbms_output.put_line( 'name: ' || nt_names(1).name ); 12 end; 13 / declare * ERROR 位于第 1 行: ORA-06530: 引用未初始化的组合 ORA-06512: 在line 7 |
SQL> declare
2 nt_names tnt_names := tnt_names(); 3 ref_cursor sys_refcursor; 4 5 n_id number(1); 6 n_name number(2); 7 begin 8 nt_names.extend; 9 -- nt_names(1) := record_name(null, null); 10 11 nt_names(1).id := 1; 12 nt_names(1).name := 2; 13 14 dbms_output.put_line( 'id: ' || nt_names(1).id ); 15 dbms_output.put_line( 'name: ' || nt_names(1).name ); 16 17 -- 将嵌套表中的结果使用 table( ) 函数封装 18 open ref_cursor for 19 select * from table(nt_names); 20 fetch ref_cursor into n_id, n_name; 21 22 -- 输出游标中的结果:结果为 NULL 23 dbms_output.put_line( 'n_id: ' || nvl( to_char(n_id), ' is null' ) ); 24 dbms_output.put_line( 'n_name: ' || nvl( to_char(n_id), ' is null' ) ); 25 end; 26 / id: 1 name: 2 n_id: is null n_name: is null PL/SQL 过程已成功完成。 |