Cha*_*hau 5 postgresql plpgsql functions
表演时
RETURN QUERY ...
Run Code Online (Sandbox Code Playgroud)
在 PL/pgSQL 函数中,之后是否可以直接访问累积到记录堆中的行数,在函数结束时返回这些行数?
例子:
RETURN QUERY SELECT * FROM tableA; -- 14 records
RETURN QUERY SELECT * FROM tableB; -- 8 records
RETURN QUERY SELECT * FROM tableC; -- 22 records
Run Code Online (Sandbox Code Playgroud)
累积记录的数量现在应该是 44。
Erw*_*ter 11
用
GET DIAGNOSTICS integer_var = ROW_COUNT;
Run Code Online (Sandbox Code Playgroud)
获取结果状态一章的手册中有更多内容。
您的示例可能如下所示:
CREATE OR REPLACE FUNCTION f_test()
RETURNS SETOF table_a AS
$func$
DECLARE
i int;
ct int := 0;
BEGIN
RETURN QUERY SELECT * FROM table_a; -- 14 records
GET DIAGNOSTICS i = ROW_COUNT; ct := ct + i;
RETURN QUERY SELECT * FROM table_b; -- 8 records
GET DIAGNOSTICS i = ROW_COUNT; ct := ct + i;
RETURN QUERY SELECT * FROM table_c; -- 22 records
GET DIAGNOSTICS i = ROW_COUNT; ct := ct + i;
RAISE NOTICE 'Returned % rows', ct; -- 44
END
$func$ LANGUAGE plpgsql
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8220 次 |
最近记录: |