Bạn có thể sử dụng con trỏ , nhưng điều đó rất không thực tế đối với tính toán tối thiểu.
Tôi sẽ sử dụng bảng tạm thời cho mục đích đó và chuyển tên bảng để sử dụng trong SQL động :
CREATE OR REPLACE FUNCTION f_min_id(_tbl regclass, OUT min_id int) AS
$func$
BEGIN
EXECUTE 'SELECT min(id) FROM ' || _tbl
INTO min_id;
END
$func$ LANGUAGE plpgsql;
Gọi:
CREATE TEMP TABLE foo ON COMMIT DROP AS
SELECT id, name
FROM users
LIMIT 50;
SELECT f_min_id('foo');
Những điểm chính
-
Tham số đầu tiên thuộc loại
regclass
để ngăn chặn việc đưa vào SQL. Thêm thông tin về câu trả lời liên quan này trên dba. ĐN . -
Tôi đã tạo bảng tạm thời
ON COMMIT DROP
để giới hạn thời gian tồn tại của nó đối với giao dịch hiện tại. Có thể có hoặc không theo ý bạn. -
Bạn có thể mở rộng ví dụ này để lấy nhiều tham số hơn. Tìm kiếm ví dụ mã cho SQL động với
EXECUTE
.