在Oracle中,我可以从UPDATE语句中返回信息,如下所示:
UPDATE SOME_TABLE
SET SOME_COL = SYSDATE
WHERE
...
RETURNING SOME_COL INTO :OutParameter
结合受影响的行数,这允许检查行是否存在,更新它,然后在一个查询中返回有关更新行的一些信息(如新更新的值,或行ID,或其他)
这也可以使用OUTPUT子句在SQL Server中完成。
在Informix中有这样的内容吗?我已经检查了Informix的UPDATE syntax和 看起来它没有任何等价物......任何替代方案?
答案 0 :(得分:1)
受影响的行数可从SQLCA记录获得,该记录可通过DBINFO('sqlca.sqlerrd2')
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>