Informix相当于Oracle的UPDATE ... RETURNING INTO语句

时间:2012-07-16 12:53:15

标签: sql oracle informix

在Oracle中,我可以从UPDATE语句中返回信息,如下所示:

UPDATE SOME_TABLE
SET SOME_COL = SYSDATE
WHERE
    ...
RETURNING SOME_COL INTO :OutParameter

结合受影响的行数,这允许检查行是否存在,更新它,然后在一个查询中返回有关更新行的一些信息(如新更新的值,或行ID,或其他)

这也可以使用OUTPUT子句在SQL Server中完成。

在Informix中有这样的内容吗?我已经检查了Informix的UPDATE syntax和 看起来它没有任何等价物......任何替代方案?

1 个答案:

答案 0 :(得分:1)

受影响的行数可从SQLCA记录获得,该记录可通过DBINFO('sqlca.sqlerrd2')

以纯SQL或SPL的形式获得

e.g:

UPDATE table SET foo = 'bar' WHERE baz = 'quux';
INSERT INTO log_table (date_stamp, msg, row_count)
  VALUES (CURRENT, "Updated foo to bar", DBINFO('sqlca.sqlerrd2'));

请参阅fine manual

与Informix中的RETURNING子句无关。这个概念对我来说似乎很奇怪 - 当多行更新时会有什么用,动态内容如SET foo = baz * bar,其中foo,baz和bar都是列,并且所有受影响的元组都没有共享一个值?< / p>