Oracle
 sql >> база данни >  >> RDS >> Oracle

Дефинирайте тип запис в PL/SQL блок, който препраща към колекция от себе си

Можете да използвате обекти, дефинирани в SQL Scope с помощта на наследяване:

SQL Fiddle

Настройка на схема на Oracle 11g R2 :

CREATE TYPE abstract_item IS OBJECT ( име 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 ) ) )ОТ ДВОЙНО 

Резултати :(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:

ДЕКЛАРИРАНЕ на елементи t_item;BEGIN елементи =t_item( 'Име на елемент', 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. Oracle :изберете максимална стойност от различни колони на същия ред

  2. NHibernate - не може да намери (оракул) диалект в конфигурацията

  3. Как да считаме плана Explain за добър - Oracle 10G

  4. PLS-00201 - идентификаторът трябва да бъде деклариран

  5. Rails 3.0.3 - Oracle_enhanced не работи