2012-03-02 7 views
0

私はPLSQL(約1週間)で新しく、何百もの属性を持つオブジェクトを持っています。PLSQLオブジェクト属性を反復する

オブジェクトに反復することが可能であるが

for i in object loop 
    object.i 
end loop; 

感謝などの属性!

答えて

1

標準のPL/SQL構文を使用することはできません。

for i in mycol.FIRST .. mycol.LAST loop 

変数iはインデックスではなく、反復されたコレクションの1つの要素です。

オブジェクトがOracle TYPEの場合は、システム・ビューALL_TYPE_ATTRSを問い合せることができます。このビューはデータベースカタログの一部です。 Oracleのリファレンス(「Oracle SQLリファレンス」ではありません)にその説明があります。あなたが動的な方法でそれにアクセスすることができれば、私は確信していません、属性名のリストを取得します。

最も簡単な方法は、属性をその型に従ってチェックし、その値を管理してからこのプロシージャを呼び出すヘルパープロシージャのセットを書くことです。

declare 
    procedure Manage_Char_Attr(value IN VARCHAR2, pclob CLOB) IS 
    BEGIN 
     if value is null then 
     ... 
    END; 
    procedure Manage_Number_Attr(value IN NUMBER, pclob CLOB) IS 
    ... 
    procedure Manage_Date_Attr(value IN DATE, pclob CLOB) IS 
    ... 

    CLOB myclob 

begin 
    -- initialize your CLOB 
    ... 
    -- manage attributes 
    Manage_Char_Attr(attr1, myclob); -- let attr1 is a string 
    Manage_Char_Attr(attr2, myclob); -- let attr2 is a string 
    Manage_Numvber_Attr(attr3, myclob); -- let attr3 is a number 
    Manage_Date_Attr(attr4, myclob); -- let attr4 is a date 
    ... 
end; 
0

はい、ドキュメントhereをご覧ください。

関連する問題