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

Buat tabel bersarang dan masukkan data hanya di tabel bagian dalam

Anda dapat menggunakan COALESCE( salary_history, salary_list() ) MULTISET UNION ALL salary_list( :your_new_value ) untuk menambahkan nilai baru ke daftar lama (atau buat daftar baru jika tidak ada).

Pengaturan Skema 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 )
/

Kueri 1 :

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

SELECT * FROM employees

Hasil :

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

Kueri 2 :

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

SELECT * FROM employees

Hasil :

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

Kueri 3 :

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

SELECT * FROM employees

Hasil :

| 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. bagaimana cara melakukan fungsi untuk mengembalikan tipe baris dari tabel di pl/sql?

  2. php:memuat driver Oracle memberikan kesalahan Tidak dapat memuat perpustakaan dinamis - Prosedur yang ditentukan tidak dapat ditemukan.

  3. Bagaimana cara mengekspor data yang diuraikan dari Python ke tabel Oracle di SQL Developer?

  4. Bagaimana cara memeriksa apakah nilai DataReader bukan nol?

  5. Cara membuat menu di SQLPlus atau PL/SQL