1

Oracleでは、次のようにUPDATEステートメントから情報を返すことができます。

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

影響を受ける行の数と組み合わせると、行が存在するかどうかを確認して更新し、更新された行に関する情報(新しく更新された値や行IDなど)をすべて1つのクエリで返すことができます。

これは、SQLServerでOUTPUT句を使用して実行することもできます。

Informixにこのようなものはありますか?InformixのUPDATE構文を確認しましたが、同等のものがないようです...代替手段はありますか?

4

1 に答える 1

1

影響を受ける行の数は、SQLCAレコードから入手できます。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 * bar-foo、baz、barがすべて列であり、影響を受けるすべてのタプルによって共有される単一の値がない場合のように、動的コンテンツで複数の行が更新された場合、それはどのように機能しますか?

于 2012-07-16T21:28:19.387 に答える