Sử dụng biến tạm (lưu trữ trên DB) trong oracle và postgres

1. Tình huống

Cần lưu trữ 1 giá trị A khi thực hiện query. Sau đó ở 1 query khác lấy ra giá trị A đó để sử dụng.

2. Cách giải quyết với Oracle DB

Đối với Oracle có thể sử dụng Package để xử lý tình huống trên.

Package là một tập hợp các kiểu dữ liệu, biến lưu giữ giá trị và các thủ tục,hàm có cùng một mối liên hệ với nhau, được gộp chung lại. Đặc điểm nổi bật nhất của package là khi một phần tử trong package được gọi thì toàn bộ nội dung của package sẽ được nạp vào trong hệ thống. Do đó, việc gọi tới các phần tử khác trong package sau này sẽ không phải mất thời gian nạp vào hệ thống nữa. Từ đó, nâng cao tốc độ thực hiện lệnh của toàn bộ hàm, thủ tục có trong package.

Ví dụ package Oracle

Như ví dụ trên khi ta gọi function setA ở 1 query nào đó thì những giá trị của package vidu (biến A) cũng được khởi tạo luôn. Sau đó nếu ta gọi getA ở 1 query khác thì sẽ lấy được giá trị của biến A khi chạy setA lúc trước đó

3. Cách giải quyết với Postgres SQL

Vì Postgres không có package như Oracle nên ta phải sử dụng cách khác.

Cách thứ nhất là tạo bảng tạm để lưu trữ dữ liệu nhưng cách này gây tốn perfomance.

Cách thứ 2 là sử dụng hàm set_config và current_settings lưu trữ cặp giá trị key values. Đây là function có sẵn của postgresql

Ví dụ

Sau khi tạo 2 function trên ta sử dụng giống như với oracle. Ví dụ trong query 1 gọi setA sau đó trong query 2 gọi getA thì sẽ lấy được giá trị tương ứng khi gọi setA.

※ Lưu ý vì đây là biến tạm nên 1 khi đã ngắt kết nối với DB tất cả sẽ giá trị sẽ bị xóa.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *