将对象值存储在类型表中

时间:2012-01-24 10:09:30

标签: oracle plsql

使用id代码将对象值存储在类型表的数组中。

对象创建:

Create or replace type t_loc as Object
    (
      name varchar2(255 byte),
      idt char(2)
    );

PLSQL Block

set serveroutput on;
  declare 
     TYPE test1 IS TABLE OF VARCHAR2(100) INDEX BY t_loc;
     test2 test1;
  begin
    test2('abad')  := t_loc('ahmedabad','CT');
    test2('bang')  := t_loc('bangalure','S');
    test2('surat')  :=t_loc('Surat','C');

    dbms_output.put_line(test2('surat'));

  end;

我无法编译上层代码。 在oracle中不可能吗?或者有什么不对吗?

2 个答案:

答案 0 :(得分:2)

您想要一个由自定义类型索引的字符串表吗?或者您想要一个自定义类型的表,由字符串索引?无论如何,test1的声明与您在下面的使用方式不符。

请尝试以下代码:

declare 
    TYPE test1 IS TABLE OF t_loc INDEX BY VARCHAR2(100);
    test2 test1;
begin
    test2('abad')  := t_loc('ahmedabad','CT');
    test2('bang')  := t_loc('bangalure','S');
    test2('surat') := t_loc('Surat','C');

    dbms_output.put_line(test2('surat').name);
end;
/

答案 1 :(得分:1)

我有以下解决方案是代码。

set serveroutput on;
      declare 
         TYPE test1 IS TABLE OF t_loc INDEX BY varchar2(100);
         test2 test1;
      begin
        test2('abad')  := t_loc('ahmedabad','CT');
        test2('bang')  := t_loc('bangalure','S');
        test2('surat')  :=t_loc('Surat','C');

        dbms_output.put_line(test2('surat').name);

      end;