gpt4 book ai didi

sql - Postgres 从字符串运行 SQL 语句

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

我想执行一个基于字符串的 SQL 语句。我通过一个返回字符串的函数创建了 SQL 语句。谁能解释我如何执行返回的语句?我知道你不能用普通的 SQL 来做,所以我在考虑把它放在一个函数中。唯一的问题是语句中的列并不总是相同的,所以我不知道这些列使用哪种数据类型。我正在使用 Postgres 9.1.0。

例如,假设从我的函数返回的 SQL 字符串是:

从abc中选择open, closed, discarded

但是,它也可以是:选择从abc打开

或者从abc选择打开,关闭

如何执行这些字符串中的任何一个,以便将结果作为仅包含语句中列出的列的表返回?

编辑:函数是用 PL/pgSQL 编写的。结果将用于报告他们不想看到没有值的列。因此,我编写的函数返回所有具有值的列的名称,然后将其添加到 SQL 语句中。

感谢您的帮助!

最佳答案

我认为您不能直接从函数返回行,因为它的返回类型是未知的。即使您将返回类型指定为 RECORD,您也必须在调用时列出返回的列。根据 Wayne Conrad 的想法,您可以这样做:

CREATE FUNCTION my_create(cmd TEXT) RETURNS VOID AS $$
BEGIN
EXECUTE 'CREATE TEMPORARY TABLE temp_result AS ' || cmd;
END;
$$ VOLATILE LANGUAGE plpgsql;

然后像这样使用函数:

BEGIN;
SELECT my_create(...);
SELECT * FROM temp_result;
ROLLBACK; -- or COMMIT

关于sql - Postgres 从字符串运行 SQL 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24438288/

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