Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Chèn và cập nhật dựa trên bản ghi trong Oracle

Bạn cũng có thể sử dụng các bản ghi dựa trên khai báo% ROWTYPE dựa trên bảng mà chèn và cập nhật được thực hiện hoặc trên một bản ghi rõ ràng TYPE tương thích với cấu trúc của bảng.

Ví dụ về Chèn dựa trên Bản ghi:

DECLARE
my_book books% ROWTYPE;
BEGIN
my_book.isbn:='1-123456-123-1';
my_book.title:='Fox Infotech Blogs';
my_book.summary:='Fox Examples';
my_book.author:='V. Kapoor ';
my_book.page_count:=300;
CHÈN VÀO sách GIÁ TRỊ my_book;
HẾT;
/
Lưu ý rằng bạn không bao gồm dấu ngoặc đơn xung quanh mã định nghĩa bản ghi . Nếu bạn sử dụng định dạng này:

CHÈN VÀO GIÁ TRỊ sách (my_book); - Với dấu ngoặc đơn, KHÔNG HỢP LỆ!

thì bạn sẽ nhận được ngoại lệ ORA-00947:không đủ giá trị, vì chương trình đang mong đợi một biểu thức riêng biệt cho mỗi cột trong bảng.

Ví dụ về cập nhật dựa trên bản ghi:

Bạn cũng có thể thực hiện cập nhật toàn bộ hàng bằng bản ghi. Ví dụ sau cập nhật một hàng trong bảng sách có bản ghi% ROWTYPE. Lưu ý rằng tôi sử dụng từ khóa ROW để cho biết rằng tôi đang cập nhật toàn bộ hàng với một bản ghi:

DECLARE
my_book books% ROWTYPE;
BEGIN
my_book.isbn:='1-123456-123-1';
my_book.title:='Fox Infotech Blogs';
my_book.summary:='Fox Examples';
my_book.author:='V. Kapoor ';
my_book.page_count:=300;

CẬP NHẬT sách
SET ROW =my_book
WHERE isbn =my_book.isbn;
END;
/
Có một số hạn chế đối với cập nhật dựa trên bản ghi:

Bạn phải cập nhật toàn bộ hàng bằng cú pháp ROW. Bạn không thể cập nhật một tập hợp con các cột (mặc dù điều này có thể được hỗ trợ trong các bản phát hành trong tương lai). Bất kỳ trường nào có giá trị bên trái NULL sẽ dẫn đến giá trị NULL được gán cho cột tương ứng.
Bạn không thể thực hiện cập nhật bằng truy vấn con.
Và, trong trường hợp bạn đang thắc mắc, bạn không thể tạo cột bảng có tên 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. Dữ liệu lớn SQL của Oracle

  2. Thông tin chi tiết

  3. Tính năng tệp điều khiển ảnh chụp nhanh với RMAN và ORA-00245

  4. Oracle getConnection chậm

  5. PL / SQL ORA-01422:tìm nạp chính xác trả về nhiều hơn số hàng được yêu cầu