SQL Server到Oracle查询转换

时间:2014-02-10 11:55:55

标签: sql-server oracle tsql

我在sql server中有这样的代码

IF EXISTS (SELECT * FROM address WHERE new_add=new_add)
    UPDATE address set old_add=old_add);
ELSE
    UPDATE address set old_add=new_add);

它在SQL Server中正常工作。但它不在甲骨文工作。它显示

SP2-0734: unknown command beginning "IF EXISTS ..." - rest of line ignored. 

请帮我将此查询从SQL更改为Oracle。感谢

2 个答案:

答案 0 :(得分:0)

SELECT 1 FROM address WHERE new_add=new_add

if @@RowCount > 0
 UPDATE address set old_add=old_add

答案 1 :(得分:0)

在两个数据库中,您都可以将查询编写为:

update address
    set old_add = old_add
    where exists  (SELECT * FROM address WHERE new_add = new_add);

根本不需要if

然而,这个查询是非感性的。它要么在所有行中为自己设置一列(如果where中的条件至少匹配一行)。或者,它不更新任何行(如果where中的条件没有匹配的行)。在任何一种情况下,都没有真正发生。