gpt4 book ai didi

PostgreSQL:在过程中返回一个选择语句

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

是否有从 MSSQL 到 PostgreSQL 的任何等效项来返回一个选择语句(结果可能来自不同的表)?在 MSSQL 中它会是这样的:

CREATE PROCEDURE MyProc
AS
BEGIN
SELECT * FROM MyTable
END

MyTable 可以是 MSSQL 中的任何表,但在 PostgreSQL 中,我必须定义要从哪个表返回。像这样:

CREATE FUNCTION MyFunction ()
RETURNS setof "MyTable" AS $$
BEGIN
RETURN QUERY SELECT * FROM "MyTable"
END;
$$ LANGUAGE plpgsql;

但我想做的是从一个参数传递的表中返回结果(当然我的过程更复杂,我的意图为什么不那么简单,这只是一个抽象)。

最佳答案

它在 Postgres 中更复杂,但有一种方法 polymorphic types :

CREATE OR REPLACE FUNCTION f_data_of(_tbl_type anyelement)
RETURNS SETOF anyelement AS
$func$
BEGIN

RETURN QUERY EXECUTE 'SELECT * FROM ' || pg_typeof(_tbl_type);

END
$func$ LANGUAGE plpgsql;

调用(重要!):

SELECT * FROM f_data_of(NULL::"MyTable");

这个相关答案中的详细解释(见最后一段:Various complete table types):

关于PostgreSQL:在过程中返回一个选择语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21281114/

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