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

Làm cách nào để trả về tập kết quả / con trỏ từ khối ẩn danh Oracle PL / SQL thực thi SQL động?

Bạn có thể viết một hàm PL / SQL để trả về con trỏ đó (hoặc bạn có thể đặt hàm đó trong một gói nếu bạn có thêm mã liên quan đến điều này):

CREATE OR REPLACE FUNCTION get_allitems
  RETURN SYS_REFCURSOR
AS
  my_cursor SYS_REFCURSOR;
BEGIN
  OPEN my_cursor FOR SELECT * FROM allitems;
  RETURN my_cursor;
END get_allitems;

Thao tác này sẽ trả về con trỏ.

Đảm bảo không đặt SELECT của bạn -String thành dấu ngoặc kép trong PL / SQL khi có thể. Đặt nó trong chuỗi có nghĩa là nó không thể được kiểm tra tại thời điểm biên dịch và nó phải được phân tích cú pháp bất cứ khi nào bạn sử dụng nó.

Nếu bạn thực sự cần sử dụng SQL động, bạn có thể đặt truy vấn của mình trong dấu ngoặc kép:

  OPEN my_cursor FOR 'SELECT * FROM allitems';

Chuỗi này phải được phân tích cú pháp bất cứ khi nào hàm được gọi, thường sẽ chậm hơn và ẩn các lỗi trong truy vấn của bạn cho đến thời gian chạy.

Đảm bảo sử dụng biến ràng buộc nếu có thể để tránh phân tích cú pháp cứng:

  OPEN my_cursor FOR 'SELECT * FROM allitems WHERE id = :id' USING my_id;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle PL / SQL Collections - Tạo Bảng lồng nhau trong Cơ sở dữ liệu

  2. Bắt đầu với Oracle Application Express-APEX

  3. Làm cách nào để lấy thông tin về chủ sở hữu chỉ mục và bảng trong Oracle?

  4. Hàm COALESCE () trong Oracle

  5. Cách thiết lập Thư mục đích đến của bản ghi lưu trữ trong cơ sở dữ liệu Oracle