gpt4 book ai didi

c++ - 使用 PostgreSQL RETURNING .. INTO 子句将插入的值返回到变量中

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:33:12 25 4
gpt4 key购买 nike

在插入之后,该语句在 Oracle 中运行良好。

INSERT INTO table_name (col1, col2) VALUES (val1, val2) RETURNING col1 INTO :var ;

我们可以将变量绑定(bind)到 :var 并执行语句。

但是,当相同的查询在 Postgres 数据库中运行时,会出现以下错误。

ERROR: syntax error at or near "INTO".

这种行为的原因是什么?

我尝试在 PL/pgSQL block 中运行查询,结果运行良好。

DO $$
DECLARE var integer;
BEGIN
INSERT INTO "table_name "(
"col1, "col2")
VALUES (val1, val2)
RETURNING "col1" INTO var;
END $$

但是当我们连接到 Postgres 数据库时,上面的查询不能在没有 PL/pgSQL block 的情况下直接使用内部 C++ 代码。我正在使用 PostgreSQL 9.5.4。由于我们支持与数据库无关的软件应用程序,因此我们需要澄清这种行为。

我希望两个数据库都以相同的方式支持 RETURNING .. INTO 子句。

最佳答案

在 PostgreSQL 中,SQL 语句 INSERT ... RETURNING 不支持 INTO 子句,与 SELECT 相同。

这两个语句仅在 PL/pgSQL 中支持 INTO

您处理 INSERT ... RETURNING 就像 PostgresSQL 中的 SELECT — 它返回一个结果集。

我不知道为什么 Oracle 将 INSERT ... RETURNING 处理得如此复杂并且与 SELECT 不同;设计决定可能是在七十年代后期才做出的。

关于c++ - 使用 PostgreSQL RETURNING .. INTO 子句将插入的值返回到变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56180013/

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