Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Tentukan tipe record di blok PL/SQL yang mereferensikan koleksi itu sendiri

Anda dapat menggunakan objek yang ditentukan dalam Lingkup SQL menggunakan pewarisan:

SQL Fiddle

Pengaturan Skema Oracle 11g R2 :

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
/

Kueri 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

Hasil :(SQLFiddle tidak menampilkannya dengan baik - tetapi berjalan tanpa kesalahan)

| 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] |

Anda dapat menggunakan deklarasi serupa di PL/SQL:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menghapus Mesin Virtual dari VirtualBox

  2. Oracle SQL - Kueri 2 tabel berdasarkan kunci asingnya

  3. Apakah mungkin untuk mengeksekusi banyak pernyataan dalam satu kueri menggunakan DBD::Oracle?

  4. Oracle nama tabel yang sama pada skema yang berbeda?

  5. Bagaimana cara mengembalikan beberapa baris dari prosedur tersimpan Oracle dari beberapa kursor?