postgresql - oracle plsql WITH语句结合INSERT

标签 postgresql plsql sql-insert with-statement

迁移 postgresql 9 函数时遇到了以下问题: 在 Oracle 中,您只能在复杂的选择语句中使用 WITH。同时,在 postgres(以及 MS SQL 2008)中,您可以同时使用 WITH 和 INSERT(更新、删除)。

例子:

     WITH prerows AS ( SELECT ObjectID, LoginID, Param FROM devices D
                         WHERE D.DevNum = '0003' AND ObjectID IS NULL )

     INSERT INTO dev_sub( ObjectID, LoginID, Param )
     SELECT ObjectID, LoginID, Param FROM prerows;

查询在 PostgreSQL 9.2 中运行良好,但在 oracle 11 XE 中写入错误:'ORA-00928:缺少 SELECT 关键字'。也许我只是想念什么?我是一个 Oracle 爱好者,如果知道它不能结合 WITH 语句和 INSERT 命令,我会很遗憾。

最好的问候,安东尼

最佳答案

尝试:

 INSERT INTO dev_sub( ObjectID, LoginID, Param )

 WITH prerows AS ( SELECT ObjectID, LoginID, Param 
                   FROM devices D
                   WHERE D.DevNum = '0003' 
                     AND ObjectID IS NULL )
 SELECT ObjectID, LoginID, Param FROM prerows;

关于postgresql - oracle plsql WITH语句结合INSERT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16584864/

相关文章:

postgresql - 从此 SQL 连接中删除重复项

oracle - PL/SQL 过程参数中的类通用行为

Oracle构建顺序和PL/SQL软件包依赖关系

oracle - PLSQL : syntax problems with trigger

java - 如何在 sql INSERT 期间自动生成 ID?

mysql - 从其他表插入多行 - "Subquery returns more than 1 row"

postgresql - 在 postgresql 数据库中查找包含非数字值的行

linux - Windows 和 Linux 的 postgres 转储是否不同?

postgresql - 在 Postgresql 中相同的查询给出 true 和 false 的相同词

sql - 在 Azure SQL 数据库中使用 "INSERT INTO"SQL 查询时出错