問題タブ [merge-statement]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
oracle - SP の出力カーソルをテーブルに MERGE しますか?
出力をrefカーソルとして返すストアドプロシージャがあります。MERGE ステートメントを使用して、出力を別のテーブルに格納したいと考えています。私は問題を抱えていますが、すべてのステートメント (WITH、USING、MERGE など) を混ぜ合わせるのに問題があります。
誰か助けてくれませんか?ありがとう!
これは私が出力したいテーブルです(STOP_TIMEは意図的に省略されています):
これはSPです:
batch-file - Oracle Mergeステートメントでバッチコミットを指定するにはどうすればよいですか?
Oracle で MERGE ステートメントを使用して、何百万ものレコードの一括挿入/更新を行っています。他のオプションとして、FORALL を使用して BULKCOLLECT を使用してからコミットすることもできますが、ループを維持する必要があるため、この操作もパフォーマンスを低下させます。マージ操作全体の完了後にコミットすると、パフォーマンスが低下します。バッチコミットのような挿入/更新の 10000 行ごとにマージステートメント内にコミット頻度を設定する方法を知りたいです。
sql - SQLServer2008-マージスクリプトが機能しない
私が書いているこのマージスクリプトはコンパイルされておらず、正しい構文を持っていると思います。
エラー:
メッセージ156、レベル15、状態1、行1キーワード「into」の近くの構文が正しくありません。メッセージ102、レベル15、状態1、行2'ct_value'の近くの構文が正しくありません。
sql - ora_rowscnがUSING句にある場合のOracleMergeステートメントの動作
ORA-00904: invalid identifier
恐ろしいエラーメッセージを表示するMERGEステートメントがあります。「無効な識別子」エラーの一般的な問題はここには存在しないことに注意してください。結合された列を更新しようとはしていません。また、列名のスペルを間違えたこともありません。句のステートメントでoracle疑似列を使用しようとしています。ORA_ROWSCN
USING
SELECT
これらのサンプルテーブルを使用して、実行しようとします
USING句から疑似列ora_rowscnを削除すると、エラーメッセージが表示されなくなり、マージは正常に完了します。
代わりにクエリをVIEWに配置すると、ora_rowscnを正常に使用できます。
クエリのVIEWを作成せずにこれを行う方法はありますか?ETLプロセスの一部として多くのテーブルでこれを行う必要があり、複数のビューを作成する必要はありません。
編集:コメントのGlennの提案に基づいて、クエリをサブクエリに入れてみました:
このクエリでもORA-00904: invalid identifier
エラーメッセージが表示されます。
これが問題を再現するためのDDLです。
sql-server - SQLServerMERGEステートメントとORDERBY句
ORDER BY句を使用して、大きなテーブルから上位10行を選択し、それが列値の1つである更新するMERGEステートメントを記述したいと思います。MERGEステートメントを使用するとTOP10行を選択できますが、ORDERBY句をどこにも配置できませんでした。
sql - 1つのテーブルと一連の値のみを持つOracle SQLマージステートメント
Spring JDBC と Oracle SQL を使用しています。
SpringJDBC クラス MapSqlParameterSource を使用して、マージしたいデータをマッピングしました。
ここで、merge ステートメントを使用してデータベース テーブルを更新/挿入したいと考えています。私が持っているのは、1 つのテーブルと、それにマージしたい一連のパラメーターだけです。
using キーワードの一時テーブルを何とか作成する必要がありますか、それとも別の方法がありますか? このようにマージするにはどうすればよいですか?
また、pr.id と pr.code という 2 つの一意のキーがあります。パラメーター:idがnullの場合があります。これが発生した場合、pr.code が :code に一致することに基づいて update ステートメントに到達したいと考えています。アップデートに次の行が含まれていても機能しますか?
sql-server - マージを使用してビューでトリガーする代わりに、テーブルのデフォルト値を適用しません
挿入/更新のトリガーの代わりに使用する更新可能なビューがあります。そのトリガーは Merge を使用します。Merge ステートメントが基礎となる物理テーブルからデフォルトの制約を適用していないことがわかりましたが、マージのドキュメントではそうすべきであることが示唆されています。
次の例は、次のことを示しています。
INSTEAD OF INSERT トリガーでのデフォルト値の使用に似たようなことがあり、挿入された行を一時テーブルにコピーし、一時テーブルを変更して物理テーブルからデフォルトの制約を追加することで解決しました。これらの追加手順のパフォーマンスの問題を許容できるかどうかはわかりません。
stored-procedures - SQL Server2008R2のMERGEステートメント内に挿入されたレコードを更新しています
SQL Server2008R2ストアドプロシージャに次のコードがあります。そのストアドプロシージャでは、ある都市を家族や人と一緒に別の都市にコピーしています。
ここでは、ファミリのソースIDとターゲットIDをで維持してい@FamilyIdMap
ます。
左の列はコード行番号を示します。
次のような出力が得られます。
ソーステーブル
ターゲットテーブル(上記のコードを使用してソーステーブルからコピー)
上記の出力の問題は、が更新されないparentID
ことです。出力を次のようにします。
期待されるターゲットテーブル
コードの10行目に問題があることはわかっています
ParentID
しかし、それを更新するには何に置き換える必要がありますか?前もって感謝します。
sql - 関連する行がソーステーブルに存在しない場合に更新します
私はこのようなマージステートメントを持っています:
これは正常に機能していますが、もう1つの条件があります。つまり、エントリがソースに存在しない場合に、宛先の行を更新する必要があります。
元。
ソース
行き先
ここで、のソースに行がないため、いくつかの計算を使用して宛先D
を変更する必要があります。Column 3
ただし、mergeは、の3つのオプションのみを提供し、delete
行が一致したかどうかを示します。update
insert
上記のステートメントでこの機能を実装するにはどうすればよいですか?
編集
以下の私のコメントで質問を編集します:
上記の例では、上記の例が実行されており、更新されて宛先テーブルB
に挿入されています。ただし、ソーステーブルに存在しない場合でもA
更新したいD