sql >> データベース >  >> RDS >> Oracle

それ自体のコレクションを参照するレコード・タイプをPL/SQLブロックで定義します。

    継承を使用してSQLスコープで定義されたオブジェクトを使用できます:

    SQLフィドル

    Oracle11gR2スキーマのセットアップ

    CREATE TYPE abstract_item IS OBJECT (
      name VARCHAR2(64)
    ) NOT FINAL NOT INSTANTIABLE
    /
    
    CREATE TYPE t_items IS TABLE OF abstract_item
    /
    
    CREATE TYPE t_item UNDER abstract_item (
      children t_items
    ) INSTANTIABLE
    /
    

    クエリ1

    SELECT t_item(
             '1',
             t_items(
               t_item( '1.1', t_items() ),
               t_item(
                 '1.2',
                 t_items(
                   t_item( '1.2.1', null )
                 )
               ),
               t_item( '1.3', null )
             )
           )
    FROM   DUAL
    

    結果 :( SQLFiddleはそれをうまく表示しませんが、エラーなしで実行されます)

    | T_ITEM('1',T_ITEMS(T_ITEM('1.1',T_ITEMS()),T_ITEM('1.2',T_ITEMS(T_ITEM('1.2.1',NULL))),T_ITEM('1.3',NULL))) |
    |-------------------------------------------------------------------------------------------------------------|
    |                                                                                  [email protected] |
    

    PL/SQLでも同様の宣言を使用できます。

    DECLARE
      items t_item;
    BEGIN
      items = t_item( 'Item Name', t_items( /* ... */ ) );
    END;
    /
    


    1. MYSQLトリガーは自動的に削除されます

    2. SQLファイアウォールを使用してPostgreSQLデータベースをサイバー攻撃から保護する方法

    3. ルックアップとグループバイで参加

    4. 警告:mysqli_select_db()は、正確に2つのパラメーターを想定しています。