1

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

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

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

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

Informix 中有这样的东西吗?我检查了 Informix 的UPDATE 语法,但它看起来没有任何等价的东西......还有其他选择吗?

4

1 回答 1

1

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

例如:

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'));

参见精美手册

没有与RETURNINGInformix 中的子句等效的东西。这个概念对我来说似乎很奇怪——当多行被更新时,这将如何工作,具有动态内容,比如SET foo = baz * barfoo、baz 和 bar 都是列,并且所有受影响的元组都没有共享单个值?

于 2012-07-16T21:28:19.387 回答