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 (
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'
/

क्वेरी 1 :

SELECT *
FROM   category

परिणाम :

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

प्रश्न 2 :

या संग्रह को क्वेरी में शामिल करने के लिए बाइंड वैरिएबल का उपयोग करें:

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;

क्वेरी 3 :

SELECT name, CARDINALITY( businesses )
FROM   Category

परिणाम :

|         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. जेबॉस के साथ DBMS_APPLICATION_INFO का उपयोग करना

  2. फ़ाइल हेल्पर्स एक्सेल से Oracle db

  3. कैसे पता लगाएं कि ओरेकल डेटाबेस ऑटो वृद्धि का समर्थन करता है या नहीं?

  4. Oracle में LPAD () फ़ंक्शन

  5. REGEXP_REPLACE - केवल ()'s . में संलग्न होने पर ही स्ट्रिंग से अल्पविराम हटाएं