小编Sha*_*haL的帖子

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

插入后,该语句可与配合使用Oracle。  

INSERT INTO table_name (col1, col2) VALUES (val1, val2) RETURNING col1 INTO :var ;
Run Code Online (Sandbox Code Playgroud)

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

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

错误:“ INTO”处或附近的语法错误。

这种行为的原因是什么?

我试图在PL / pgSQL块中运行查询,它运行完美。

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

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

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

c++ oracle postgresql

6
推荐指数
1
解决办法
80
查看次数

标签 统计

c++ ×1

oracle ×1

postgresql ×1