OracleからPostgreSQLへのDML(INSERT/UPDATE/DELETE)クエリの束を変換したので、同じ行セットを生成するかどうかを確認する必要があります。つまり、oracleとpostgresqlデータベースは、*何上記の文について良いことだが、私は戻って」先頭に追加できるということですつまりPostgreSQLのOracleに相当するINSERT ... RETURNING *;
INSERT INTO test(id, name) VALUES(42, 'foo') RETURNING *;
、最初に、更新はPostgreSQLの側など、同じ行を更新し、私はDML文でRETURNING句を使用することができ、同じデータが含まれています'をDML文の構造や名前を知らなくても実行することができ、select文のようにすべての行を取得するだけです。
しかし、Oracle側では光っていないようです。 Oracle 8i(私が扱っているもの)によれば、RETURNING節をサポートしていますが、結果を変数に格納しなければならず、列名を手動で指定する代わりにすべての結果列を取得する明白な方法がないようです。
したがって、問題は、PostgreSQLをエミュレートするoracleステートメント(または一連のステートメント)があり、テーブル名または列名をハードコードせずに「*を返す」場合です。言い換えれば、このようなOracleの機能を記述する方法があります:
fn('INSERT INTO test(id, name) VALUES(42, ''foo'')')
これは、SQL文で挿入(または一般的な場合には修正された)行の集合を返す必要があります。
更新: 私は実際にa very similar question(PostgreSQLではなくSQLサーバーからOracleへの変換用)を見つけました。それでも、私はできるだけ簡単な答えを聞きたいです。
JavaからこのSQLを呼び出していますか? –
いいえ、実際に私はPythonスクリプトから呼び出しています。したがって、文ごとにcolnameを返します.1 colname2は元の文を解析し、列名と表名を抽出する必要があります。マイナーな仕事。 – alexk
サポートされなくなり、廃止されたOracleバージョンを使用しているのはなぜですか? –