Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Xác định một loại bản ghi trong khối PL / SQL tham chiếu đến một tập hợp của chính nó

Bạn có thể sử dụng các đối tượng được xác định trong Phạm vi SQL bằng cách sử dụng kế thừa:

SQL Fiddle

Thiết lập lược đồ 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
/

Truy vấn 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

Kết quả :(SQLFiddle không hiển thị đẹp - nhưng nó chạy không có lỗi)

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

Bạn có thể sử dụng một khai báo tương tự trong 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. Làm cách nào để nhận giá trị đã kiểm tra của hộp kiểm từ Treeview trong c #?

  2. SQL:kích hoạt để ngăn dữ liệu không hợp lệ được chèn vào bảng

  3. Không thể chèn các ký tự tiếng Ả Rập vào cơ sở dữ liệu oracle

  4. ORA-00257:lỗi trình lưu trữ. Chỉ kết nối nội bộ, cho đến khi được giải phóng.

  5. Câu lệnh SQL để nối và đưa ra kết quả trong nhiều cột