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

Sisipan dan Pembaruan Berbasis Rekam Di Oracle

Anda juga dapat menggunakan rekaman yang didasarkan pada deklarasi %ROWTYPE terhadap tabel yang disisipkan dan diperbarui, atau pada JENIS rekaman eksplisit yang kompatibel dengan struktur tabel.

Contoh Sisipan Berbasis Rekaman:

MENYATAKAN
buku_bukuku%ROWTYPE;
BEGIN
buku_ku.isbn :='1-123456-123-1';
buku_ku.title :='Blog Infotech Fox';
buku_saya.summary :='Contoh Rubah';
buku_saya.penulis :='V. Kapoor';
my_book.page_count :=300;
INSERT INTO books VALUES my_book;
END;
/
Perhatikan bahwa Anda tidak menyertakan tanda kurung di sekitar penentu data . Jika Anda menggunakan format ini:

MASUKKAN KE NILAI buku (buku_saya); -- Dengan tanda kurung, INVALID!

maka Anda akan mendapatkan ORA-00947:pengecualian nilai tidak cukup, karena program mengharapkan ekspresi terpisah untuk setiap kolom dalam tabel.

Contoh Pembaruan Berbasis Catatan:

Anda juga dapat melakukan pembaruan seluruh baris menggunakan catatan. Contoh berikut memperbarui baris dalam tabel buku dengan catatan %ROWTYPE. Perhatikan bahwa saya menggunakan kata kunci ROW untuk menunjukkan bahwa saya memperbarui seluruh baris dengan catatan:

MENYATAKAN
buku_bukuku%ROWTYPE;
BEGIN
buku_ku.isbn :='1-123456-123-1';
buku_ku.title :='Blog Infotech Fox';
buku_saya.summary :='Contoh Rubah';
buku_saya.penulis :='V. Kapoor';
buku_saya.page_count :=300;

UPDATE buku
SET ROW =my_book
WHERE isbn =my_book.isbn;
END;
/
Ada beberapa batasan pada pembaruan berbasis catatan:

Anda harus memperbarui seluruh baris dengan sintaks ROW. Anda tidak dapat memperbarui subset kolom (meskipun ini mungkin didukung di rilis mendatang). Bidang apa pun yang nilainya dibiarkan NULL akan menghasilkan nilai NULL yang ditetapkan ke kolom terkait.
Anda tidak dapat melakukan pembaruan menggunakan subkueri.
Dan, jika Anda bertanya-tanya, Anda tidak dapat membuat kolom tabel yang disebut ROW.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah pernyataan CASE dan DECODE setara?

  2. Bagaimana cara mendapatkan informasi tentang Tipe Buatan Pengguna?

  3. Cara menambahkan nomor urut untuk setiap elemen dalam grup menggunakan kueri SQL tanpa tabel temp

  4. Oracle SQL Where klausa untuk menemukan catatan tanggal yang lebih lama dari 30 hari

  5. Bagaimana cara menghasilkan seluruh DDL dari skema Oracle (skrip)?