2012-01-24 46 views
1

次のIDは、オブジェクトテーブルをタイプテーブルの配列に格納するコードです。タイプテーブルにオブジェクト値を格納

オブジェクトの作成:

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

PLSQLブロック

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では使用できませんか?または何か間違っていますか?

答えて

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; 
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; 
/

は、次のコードを試してみてください

関連する問題