当前位置: 首页 > 面试题库 >

Oracle等同于PostgreSQL INSERT-ETURNING *;

庞书
2023-03-14
问题内容

我已经将一堆DML(INSERT / UPDATE /
DELETE)查询从Oracle转换为PostgreSQL,现在我需要检查它们是否产生相同的行集,即,假设oracle和postgresql数据库包含相同的行,则delete删除相同的行最初使用相同的数据,更新则更新相同的行,等等。在PostgreSQL方面,我可以将returning子句与DML语句一起使用,即

INSERT INTO test(id, name) VALUES(42, 'foo') RETURNING *;

上面的语句的优点在于,我可以在任何DML语句前添加“返回*”,而无需知道其执行的表的结构甚至表的名称,并且可以像选择语句一样获取所有行。

但是,在Oracle方面似乎并不那么光彩夺目。根据文档,Oracle
8i(我正在使用的那个)支持RETURNING子句,但是它必须将结果存储到变量中,并且似乎没有明显的方法来获取所有结果列,而不是手动指定列名。

因此,问题是是否存在一个oracle语句(或语句序列)来模拟PostgreSQL的“ returning
*”而无需对表或列名进行硬编码。换句话说,有没有办法编写这样的Oracle函数:

fn('INSERT INTO test(id, name) VALUES(42, ''foo'')')

它应返回由SQL语句插入(或在一般情况下进行修改)的行集。


问题答案:

目前尚不可能,特别是在旧版本的Oracle(例如8i)中。看到类似问题的答案。



 类似资料:
  • 问题内容: 我需要能够生成运行查询,该查询将返回下表中的ID的下一个值: 在Oracle中,您可以在序列上调用NEXTVAL,它为您提供下一个序列(注意:不必在表上进行插入)。 谷歌搜索后,我发现您可以使用以下查询找到auto_increment的当前值: 问题是我希望每次查询该值时该值都增加。在Oracle中,当您调用nextval时,即使不将行插入表中,序列的值也会增加。 有什么方法可以修改上

  • 问题内容: 有两个不等于运算符-和。 它们之间有什么区别?我听说这比其他字符串比较有效。任何人都可以对此声明做出定性评论。 问题答案: 它们是相同的(与第三种形式一样)。 不过请注意,从解析器的角度来看,它们仍然被认为是不同的,这是为将不匹配或定义的存储轮廓。 这不像在解析器对待和还在分析阶段,所以你不能超载,并为不同的运营商。

  • 问题内容: 在PHP中可以做到。在JavaScript中,您通常会使用相同的方法,但这并不完全相同。如果确实存在,但条件是或(或可能还有其他值),则条件也将评估为false 。 JavaScript 中PHP的完美替代品是什么? 从更广泛的意义上讲,有关JavaScript处理不存在的变量,没有值的变量等的通用完整指南会很方便。 问题答案: 我通常使用运算符: 如果该属性不存在或其值是,它将返回。

  • 问题内容: 我正在寻找一种等效于C / PHP 或C#/ Java程序员(适用于.NET)的JavaScript 。 我的基本要求是现在使用数字的千位分隔符格式,但是可以处理很多组合(包括日期)的东西会很好。 我意识到Microsoft的Ajax库提供了的版本,但我们不希望该框架的全部开销。 问题答案: 从ES6开始,您可以使用模板字符串: 除此以外: 尝试sprintf()for JavaScr

  • 问题内容: 我在Windows Server 2008上使用SQL Server 2008 Enterprise。我想从前11位到前20位选择结果(例如,我只对第11位到第20位结果感兴趣)。任何想法如何有效地在tsql中编写此查询? 在此先感谢,乔治 问题答案: 不幸的是,SQL Server没有提供类似于MySQL语法的任何东西。但是,您可能想要尝试使用派生表,如下所示:

  • 问题内容: 这是执行字符串替换的两种方法: 如何使用Java做与第一种方法类似的操作? 问题答案: 或更短:

  • 问题内容: 实现与Java等效的C ++的首选方法是什么? 问题答案: 尝试使用: 这要求你的编译器启用rtti支持。 编辑:我对这个答案有很好的评论! 每次需要使用dynamic_cast(或instanceof)时,最好问问自己是否必要。通常,这是不良设计的标志。 典型的解决方法是将要检查的类的特殊行为放入基类的虚函数中,或者引入诸如访问者之类的东西,你可以在不更改接口的情况下为子类引入特定行

  • 问题内容: 显然,这比我想象的要难找到。而且甚至很简单… 是否有与Javascript中内置的PHP htmlspecialchars等效的功能?我知道自己很容易实现,但是使用内置函数(如果可用)会更好。 对于不熟悉PHP的人,htmlspecialchars可将类似的内容转换为 我知道这一点,因此不能这样工作。 问题答案: 解决方案代码存在问题-它只会转义每个特殊字符的第一次出现。例如: 这是正