問題タブ [bulk-collect]

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.

0 投票する
1 に答える
421 参照

oracle - 2 つの行タイプで一括収集を使用する

以下のような 2 つのテーブルのレコードを返すカーソル クエリがあります。

一括収集を使用してコレクションに収集するにはどうすればよいですか?

私は試した:

しかし、上記は機能していないようです。

0 投票する
2 に答える
14532 参照

oracle - PLS-00497: INTOリストで単一行と複数行(BULK)を混在させることはできません

を使用して 2 つのテーブルにデータを表示するプロキュアを作成しましたBULK COLLECTが、このエラーが発生し続けます。

BULK COLLECTただし、ステートメントに where 句を削除して含めると機能します。

0 投票する
1 に答える
5219 参照

oracle - Oracle Bulk Collect with limit and for all がすべてのレコードを正しく処理しない

ストアド プロシージャを使用して、Oracle テーブルの 60,000 レコード近くを処理する必要があります。そのような行ごとに、2 番目のテーブルの行を削除して更新し、3 番目のテーブルに行を挿入する必要があります。

カーソル ループを使用すると、手順が完了するまでに約 6 ~ 8 時間かかります。Bulk Collect with Limit に切り替えると、実行時間は短縮されるが処理が正しくない。以下は、手順の一括収集バージョンです。

これらのレコードの約 20k では、最初の削除操作は正しく処理されますが、その後の更新と挿入は処理されません。残りの 40k レコードでは、3 つの操作がすべて正しく処理されます。

何か不足していますか?また、Bulk Collect で使用できる最大 LIMIT 値はいくつですか?

0 投票する
1 に答える
62 参照

sql - プロシージャ内の PLSQL DML ステートメント

以下の手順を実行しようとしていますが、BULKCOLLECT と FORALL を使用してコードをリファクタリングするように指示されています。それは単なる警告ですか、それとも私の手順では以下のように使用しないでください。もしそうなら、配列を繰り返し処理していて、各値をテーブルに更新する必要があるため、コードをどのように変更する必要がありますか。

/

0 投票する
0 に答える
68 参照

sql - あるデータセットをデータ範囲を含む別のデータセットと比較する最も効率的な方法は何ですか?

現在の本番データを、日付範囲を折りたたんだデータと比較する最も効率的な方法を考え出そうとしています。

したがって、基本的に、ユーザーが特定のプランに接続されてから、別のプランに切り替えたり、1か月間プランに含まれていない可能性のある実稼働データがあります....

例えば:

次に、これらの日付が折りたたまれます。上記の場合、リターンは 3 スパンになります。

生成された折りたたまれたスパンは連想配列に入れられるので、この実行の前のプロセスから作成されたイメージと比較して確認できます。

また、現在の折りたたまれたスパンのデータセットを配列にロードして、本番データ配列の各行のテーブルに移動する代わりに、より迅速にアクセスできるようにします。これは、入力しているテーブルと同じデータ型オブジェクトを作成してから、次のように一括収集することによって行われます

したがって、この時点で、2 つの連想配列が埋められ、メンバーとその有効性によって並べ替えられています。

では、相違点やその他の変更点を比較するにはどうすればよいでしょうか?

これまでのところ、本番データをループして、別の 3 番目の配列を一時的にロードし、次のような現在の折りたたまれたデータからそのメンバー データだけを読み込みます。

このコレクションに0行がある場合、新しいレコードを追加して、次に進み、このコレクションをループして、外側のループの現在の行と比較できることを知っています。同じであれば、何もする必要はありません。 、物事を更新する必要があります。

これは、各行に対して行うオーバーヘッドが大きいように思えます。私は、顧客とその有効なデータのスパンに基づいて違いをコレクションと比較するためのより良い方法があるかどうか疑問に思っていました.

もう 1 つの問題は、一括収集のサイズを制限しているため、同じ顧客が異なる一括収集にまたがっている場合は、それを解決する必要があることです。

したがって、目標は、データ スパンの折りたたまれたウィンドウだけで、この新しいテーブルを運用データと同期させることです。

0 投票する
1 に答える
38 参照

oracle - 多数のレコードを処理しながら個々のレコードをログに記録する

既存の注文リストに対して製品を割り当てる手続きを行っています。

以下の2つの方法を試しました。

  1. Bulk Collect:I Order_Master と Product_Master を結合して、ステップ 1 と 2 を 1 つのクエリに結合しました。次に、Bulk-Collect を使用して割り当てを挿入します。ただし、個々のレコードのログと追跡が失われています。
  2. For ループ: 上記のように For ループを使用しました。しかし、これには時間がかかりすぎます。実行時間を何倍にも増やします。

ロギングと追跡とともに、処理を高速にしたいと考えています。どんな助けでも大歓迎です。

事前にサンクス。