Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Informix相当于Oracle';s更新。。。返回到语句中_Sql_Oracle_Informix - Fatal编程技术网

Sql Informix相当于Oracle';s更新。。。返回到语句中

Sql Informix相当于Oracle';s更新。。。返回到语句中,sql,oracle,informix,Sql,Oracle,Informix,在Oracle中,我可以通过UPDATE语句返回信息,如下所示: UPDATE SOME_TABLE SET SOME_COL = SYSDATE WHERE ... RETURNING SOME_COL INTO :OutParameter 结合受影响的行数,可以在一个查询中检查行是否存在、更新行,然后返回有关更新行的一些信息(如新更新的值、行id或其他信息) 这也可以在SQLServer中使用OUTPUT子句完成 Informix中有类似的东西吗?我已经检查了Informix的和

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

UPDATE SOME_TABLE
SET SOME_COL = SYSDATE
WHERE
    ...
RETURNING SOME_COL INTO :OutParameter
结合受影响的行数,可以在一个查询中检查行是否存在、更新行,然后返回有关更新行的一些信息(如新更新的值、行id或其他信息)

这也可以在SQLServer中使用OUTPUT子句完成

Informix中有类似的东西吗?我已经检查了Informix的和
它看起来没有任何等价物。。。任何替代方案?

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

e、 g:


Informix中没有与
RETURNING
子句等价的语句。这个概念对我来说似乎很奇怪-当多行被更新时,它是如何工作的,具有动态内容,例如
SET foo=baz*bar
其中foo、baz和bar都是列,并且没有一个值被所有受影响的元组共享?

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

e、 g:


Informix中没有与
RETURNING
子句等价的语句。这个概念对我来说似乎很奇怪-如果更新了多个行,并且有动态内容,例如
SET foo=baz*bar
其中foo、baz和bar都是列,那么这将如何工作,所有受影响的元组都不共享单个值?

您可以使用
RETURNING
子句将值放入一个集合中,以便一次捕获多行。扩展Adam的评论,RETURNING子句的非常有用之处在于,INSERT或DELETE语句返回有关已修改行的信息。在您的示例中,您可以将返回的foo添加到:F中,使其在乘以baz*bar后输出foo的最终值。这将适用于由Sequencer、Randomizer、触发器、函数等更改的值。无论如何,我接受了您的“Informix中没有等价于RETURNING子句”的回答。您可以使用
RETURNING
子句将值放入一个集合中,以便一次捕获多行。扩展Adam的评论,RETURNING子句的非常有用之处在于,UPDATE、INSERT或DELETE语句可以返回有关已修改行的信息。在您的示例中,您可以将返回的foo添加到:F中,使其在乘以baz*bar后输出foo的最终值。这将适用于由定序器、随机化器、触发器、函数等更改的值。无论如何,我接受了您的“Informix中没有等价于RETURNING子句”的回答。
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'));