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

Bagaimana cara memasukkan nilai ke tabel bersarang tanpa kehilangan data di tabel itu?

Gunakan MULTISET UNION [ALL|DISTINCT] operator:

SQL Fiddle

Pengaturan Skema Oracle 11g R2 :

CREATE OR REPLACE TYPE businessTableForCategories AS TABLE OF VARCHAR(128);
/

CREATE TABLE Category (
name                    VARCHAR(128) PRIMARY KEY,
businesses              businessTableForCategories
) NESTED TABLE businesses STORE AS categoryBusinessTable
/

INSERT INTO Category VALUES (
  'Restaurant',
  businessTableForCategories('xzqpehc234ajdpa8')
)
/

UPDATE Category
SET businesses = businesses
                 MULTISET UNION ALL 
                 businessTableForCategories('other_value')
WHERE name = 'Restaurant'
/

Kueri 1 :

SELECT *
FROM   category

Hasil :

|       NAME |                   BUSINESSES |
|------------|------------------------------|
| Restaurant | xzqpehc234ajdpa8,other_value |

Kueri 2 :

Atau gunakan variabel bind untuk menyertakan koleksi dalam kueri:

DECLARE
  businesses businessTableForCategories := businessTableForCategories();
BEGIN
  businesses.EXTEND( 10000 );
  FOR i IN 1 .. 10000 LOOP
    businesses(i) := DBMS_RANDOM.STRING( 'x', 128 );
  END LOOP;
  INSERT INTO Category VALUES ( 'lots of data', businesses );
END;

Kueri 3 :

SELECT name, CARDINALITY( businesses )
FROM   Category

Hasil :

|         NAME | CARDINALITY(BUSINESSES) |
|--------------|-------------------------|
| lots of data |                   10000 |
|   Restaurant |                       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. Oracle menyisipkan dari pilih ke dalam tabel dengan lebih banyak kolom

  2. Hitung jumlah nilai per id

  3. Oracle:urutan MySequence.currval belum ditentukan dalam sesi ini

  4. Pisahkan fungsi di oracle ke nilai yang dipisahkan koma dengan urutan otomatis

  5. cara mengekspor output dalam format CSV melalui prosedur