gpt4 book ai didi

sql - 从 plpgsql 中的执行查询字符串返回值

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

我正在尝试从这样的函数返回一个 ID:

CREATE OR REPLACE FUNCTION fx (myTable text, myValue text) returns int
as $$
DECLARE
sqlQuery TEXT;
resultId INT;
BEGIN
sqlQuery :=
'INSERT INTO '
|| myTable || ' (id, some_column) values'
|| ' ('
|| 'nextval(' || quote_literal('seq_' || myTable) || ')'
|| ',' || myValue
|| ') RETURNING id INTO ' || resultId;

EXECUTE sqlQuery;
RETURN resultId;

END;
$$
LANGUAGE plpgsql;

select fx('some_table', 'some_value');

但是不工作。

如何从执行的 sql 查询字符串中获取此 ID?

最佳答案

create or replace function fx (mytable text, myvalue text)
returns int as $body$
declare
sqlquery text;
resultId int;
begin

sqlquery := format ($$
insert into %I (id, some_column) values ($1, $2)
returning id
$$, mytable
);
execute sqlquery
into resultId
using nextval('seq_' || mytable), myvalue;
return resultId;

end;
$body$ language plpgsql;

使用 %I format传递标识符和 execute using 的说明符传递数据参数。

关于sql - 从 plpgsql 中的执行查询字符串返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40533186/

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