gpt4 book ai didi

postgresql - 从表变量中选择

转载 作者:行者123 更新时间:2023-11-29 11:30:48 25 4
gpt4 key购买 nike

我试图保存 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

another_function(table_holder my_table)的代码分别为:

BEGIN

RETURN QUERY
SELECT col FROM table_holder where id = 1;

END

是否可以对变量运行 SELECT 查询?如果没有,是否有办法绕过此限制?

我正在使用 PostgreSQL 9.2。

最佳答案

plpgsql 中没有“表变量”。这是您会在 SQL Server 中找到的东西。

使用 temporary table相反:

BEGIN

CREATE TEMP TABLE table_holder AS
SELECT * FROM table_holder
WHERE <some condition>
ORDER BY <some expression>
;

...

END

在 session 的生命周期内存在一个临时表。要在函数(或封闭事务)的末尾自动将其删除,请在创建语句中使用 ON COMMIT DROP

CREATE TEMP TABLE table_holder ON COMMIT DROP AS
SELECT ...

临时表在同一个 session 中是可见的,但在外部不可见。

一种替代方法是使用 cursors in PL/pgSQL .

更多选择:

关于postgresql - 从表变量中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17873735/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com