Việc sử dụng các khai báo sau là gì và chúng tôi sẽ sử dụng những loại khai báo này ở đâu?Sự khác biệt giữa ROWTYPE, TYPE và RECORD trong postgresql?
myrow tablename%ROWTYPE;
myfield tablename.columnname%TYPE;
arow RECORD;
Việc sử dụng các khai báo sau là gì và chúng tôi sẽ sử dụng những loại khai báo này ở đâu?Sự khác biệt giữa ROWTYPE, TYPE và RECORD trong postgresql?
myrow tablename%ROWTYPE;
myfield tablename.columnname%TYPE;
arow RECORD;
Từ PostgreSQL's documentation:
TYPE
cung cấp các kiểu dữ liệu của một biến hoặc bảng cột. Bạn có thể sử dụng điều này để khai báo các biến sẽ giữ các giá trị cơ sở dữ liệu. Ví dụ: giả sử bạn có một cột có tên là user_id
trong bảng users
của mình. Để khai báo biến có cùng kiểu dữ liệu với tên users.user_id
bạn viết: user_id users.user_id%TYPE;
.
ROWTYPE
: Biến của loại hỗn hợp được gọi là biến hàng (hoặc biến loại hàng). Biến như vậy có thể chứa toàn bộ hàng của kết quả truy vấn SELECT
hoặc FOR
, miễn là tập hợp cột của truy vấn đó khớp với loại được khai báo của biến. Các trường riêng lẻ của giá trị hàng được truy cập bằng ký hiệu dấu chấm thông thường, ví dụ: rowvar.field
.
RECORD
: Biến bản ghi tương tự như biến loại hàng, nhưng chúng không có cấu trúc được xác định trước. Họ thực hiện cấu trúc hàng thực tế của hàng mà họ được chỉ định trong một lệnh SELECT
hoặc FOR
. Cấu trúc con của một biến bản ghi có thể thay đổi mỗi khi nó được gán cho. Một hệ quả của điều này là cho đến khi một biến bản ghi được gán lần đầu tiên, nó không có cấu trúc con, và bất kỳ nỗ lực nào để truy cập một trường trong nó sẽ vẽ một lỗi thời gian chạy.
Xem liên kết để biết thêm các ví dụ chuyên sâu.