Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

एक नेस्टेड तालिका बनाएं और केवल आंतरिक तालिका में डेटा डालें

आप उपयोग कर सकते हैं COALESCE( salary_history, salary_list() ) MULTISET UNION ALL salary_list( :your_new_value ) पुरानी सूची में नया मान जोड़ने के लिए (या यदि यह मौजूद नहीं है तो एक नई सूची बनाएं)।

Oracle 11g R2 स्कीमा सेटअप :

CREATE OR REPLACE TYPE salary_list AS TABLE OF NUMBER;
/

CREATE TABLE employees(
  id             NUMBER,
  salary_history salary_list
) NESTED TABLE salary_history STORE AS salary_history_tab
/

INSERT INTO employees VALUES ( 1, NULL )
/

क्वेरी 1 :

UPDATE employees
SET   salary_history = COALESCE( salary_history, salary_list() )
                       MULTISET UNION ALL salary_list( 500 )
WHERE id = 1

SELECT * FROM employees

परिणाम :

| ID | SALARY_HISTORY |
|----|----------------|
|  1 |            500 |

प्रश्न 2 :

UPDATE employees
SET   salary_history = COALESCE( salary_history, salary_list() )
                       MULTISET UNION ALL salary_list( 700 )
WHERE id = 1

SELECT * FROM employees

परिणाम :

| ID | SALARY_HISTORY |
|----|----------------|
|  1 |        500,700 |

क्वेरी 3 :

UPDATE employees
SET   salary_history = COALESCE( salary_history, salary_list() )
                       MULTISET UNION ALL salary_list( 500 )
WHERE id = 1

SELECT * FROM employees

परिणाम :

| ID | SALARY_HISTORY |
|----|----------------|
|  1 |    500,700,500 |


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CONTAINS Oracle टेक्स्ट के साथ काम नहीं करता है

  2. Oracle XMLTable- पैरेंट नोड से कॉलम लाना

  3. JDBC द्वारा Oracle में निष्क्रिय सत्र

  4. C# TimeSpan के साथ OracleParameter का उपयोग करना - शाब्दिक मेल नहीं खाता

  5. SQL तालिका मौजूद नहीं है