Xin*_*Xin 4 postgresql plpgsql postgresql-9.2
我试图保存SELECT查询的结果,传递它,并在另一个PL/pgSQL函数中重用它:
DECLARE
table_holder my_table; --the type of table_holder is my_table;
result text;
BEGIN
SELECT * INTO table_holder FROM table_holder ;
result = another_function(table_holder);
return result;
END
Run Code Online (Sandbox Code Playgroud)
代码another_function(table_holder my_table)分别为:
BEGIN
RETURN QUERY
SELECT col FROM table_holder where id = 1;
END
Run Code Online (Sandbox Code Playgroud)
是否可以对SELECT变量运行查询?如果没有,有没有办法解决这个限制?
我正在使用PostgreSQL 9.2.
Erw*_*ter 12
plpgsql中没有"表变量".这是你在SQL Server中可以找到的东西.
改为使用临时表:
BEGIN
CREATE TEMP TABLE table_holder AS
SELECT * FROM table_holder
WHERE <some condition>
ORDER BY <some expression>
;
...
END
Run Code Online (Sandbox Code Playgroud)
会话的生命周期中存在临时表.要在函数末尾(或封闭事务)中删除它,请ON COMMIT DROP在创建语句中自动使用.
CREATE TEMP TABLE table_holder ON COMMIT DROP AS
SELECT ...
Run Code Online (Sandbox Code Playgroud)
临时表对同一会话(或事务中的)中的任何其他功能自动可见.
一种替代方法是在plpgsql中使用游标,如本手册中所述.
| 归档时间: |
|
| 查看次数: |
11218 次 |
| 最近记录: |