Bạn có thể có INOUT
tham số trong một thủ tục.
Bạn gọi một thủ tục với CALL
tuyên bố; nếu có bất kỳ INOUT
nào tham số, câu lệnh sẽ trả về một hàng kết quả giống như SELECT
.
Đây là một ví dụ sử dụng một thủ tục trả về một refcursor
:
CREATE PROCEDURE testproc(INOUT r refcursor) LANGUAGE plpgsql AS
$$BEGIN
r := 'cur';
OPEN r FOR VALUES (1), (42), (12321);
END;$$;
BEGIN;
CALL testproc(NULL);
r
-----
cur
(1 row)
FETCH ALL FROM cur;
column1
---------
1
42
12321
(3 rows)
COMMIT;