2013-08-23 38 views
0

我想用另一种类型(Oracle)中的表类型填充空值。 我会写代码,它会更容易解释这个问题。如何用空值填充表类型中的表类型

DECLARE 
    TYPE type_1 is record (col_1 varchar2(255), 
         col_2 varchar2(30), 
         col_3 varchar2(3) 
         ); 
    TYPE table_1_tbl is table of type_1; 

    TYPE table_2 is record (col_1 varchar2(255), 
          col_2 varchar2(30), 
          t1 table_1_tbl 
         ); 
    TYPE table_2_tbl is table of table_2; 

    TYPE type_3 is record (col_1 varchar2(30), 
         col_2 VARCHAR2(19), 
         t2 table_2_tbl 
         ); 
    TYPE table_3_tbl is table of type_3; 

    Obj table_3_tbl; 

BEGIN 
    select 
      'value_1', 
      'value_2', 
      null 
     BULK COLLECT INTO 
      Obj 
     FROM dual; 
END; 
/

此代码的结果如下:

Error report: 
ORA-06550: line 32, column 16: 
PLS-00382: expression is of wrong type 
06550. 00000 - "line %s, column %s:\n%s" 
*Cause: Usually a PL/SQL compilation error. 
*Action: 

正如你可以看到,甲骨文不会让我用NULL值来填充我变量“目标文件”的“T3”栏。你们知道我该怎么做?

注:我不被允许在模式中编译这些类型。

回答

0

尝试以下操作:

... 
BEGIN 
    obj := new table_3_tbl(); 
    obj.extend(1); 
    obj(1).col_1 := 'value_1'; 
    obj(1).col_2 := 'value_2'; 
    obj(1).t2 := NULL; 
END; 
/
+0

感谢您的回答,但我会从查询中获取值,我只是用双表为例。不过谢谢! – user2711220