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

Как да вмъкна стойност във вложена таблица, без да губя данни в тази таблица?

Използвайте MULTISET UNION [ALL|DISTINCT] оператор:

SQL Fiddle

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

CREATE OR REPLACE TYPE businessTableForCategories AS TABLE OF VARCHAR(128);/CREATE TABLE Category (име VARCHAR(128) PRIMARY KEY,businesses businessTableForCategories) ВГЛАДЕНА ТАБЛИЦА businesses STORE AS categoryBusinessTable/INSERT INTO Category VALUES ( 'Restaurant' , businessTableForCategories('xzqpehc234ajdpa8'))/UPDATE CategorySET businesses =businesses MULTISET UNION ALL businessTableForCategories('other_value')WHERE name ='Restaurant'/ 

Заявка 1 :

ИЗБЕРЕТЕ *ОТ категория 

Резултати :

<предварителен код>| ИМЕ | БИЗНЕС ||------------|------------------------------|| Ресторант | xzqpehc234ajdpa8,друга_стойност |

Заявка 2 :

Или използвайте свързваща променлива, за да включите колекцията в заявката:

ДЕКЛАРИРАНЕ на бизнеси businessTableForCategories :=businessTableForCategories();BEGIN businesses.EXTEND( 10000); FOR i IN 1 .. 10000 LOOP businesses(i) :=DBMS_RANDOM.STRING( 'x', 128); КРАЙНА ПРИМКА; INSERT INTO Category VALUES („много данни“, бизнеси);END; 

Заявка 3 :

ИЗБЕРЕТЕ име, CARDINALITY( businesses )FROM Category 

Резултати :

<предварителен код>| ИМЕ | КАРДИНАЛНОСТ (БИЗНЕС) ||--------------|-------------------------|| много данни | 10 000 || Ресторант | 2 |


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да замените стойностите на sqlldr

  2. Не може да се извлече XML стойност от Oracle CBLOB

  3. Крайната точка на Spring Boot Actuator /health не показва база данни или информация за файловата система

  4. Евклидово разстояние

  5. Функцията Concat не работи - невалиден брой аргументи