問題タブ [database-cursor]

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 投票する
11 に答える
33289 参照

sql - リレーショナル セット ベースのクエリがカーソルよりも優れているのはなぜですか?

TSQL や PLSQL などでデータベース クエリを作成する場合、多くの場合、カーソルを使用して行を反復処理してタスクを実行するか、同じジョブを一度に実行する単一の SQL ステートメントを作成するかを選択できます。

また、単純に大量のデータ セットをアプリケーションに戻してから、C#、Java、PHP などを使用して行ごとに処理するという選択肢もあります。

セットベースのクエリを使用する方が良いのはなぜですか? この選択の背後にある理論は何ですか? カーソルベースのソリューションとそれに相当するリレーショナル ソリューションの良い例は?

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

oracle - PLS-00306 (引数の数またはタイプが間違っています) カーソルへの呼び出し

ここで何かが欠けているのではないかと思います。トリガーの関連部分は次のとおりです。

そして、これが私が戻ってきたエラーメッセージです。

ドキュメントを正しく理解している場合はうまくいくはずですが、そうではないので、何か間違ったことをしているに違いありません。何か案は?


@ Matthew - 私は助けに感謝しますが、私が混乱している理由は、このコードがうまく機能せず、参照されているエラーが発生しているためです。データベースには他のトリガーがあり、コードはほぼ同じなので、それが私が間違っていたのか、トリガーを保存しようとしている方法などにあるのかはわかりません.


@ Matthew - さて、私は恥ずかしい思いをするようになりました。あなたが提供したコードをコピーして新しいトリガーに貼り付けたところ、うまくいきました。そこで、元のトリガーに戻って試してみたところ、エラー メッセージが再び表示されました。ただし、今回はトリガーから何かを削除し始め、この行を削除した後、

物事はうまく保存されました。つまり、エラーがあると思っていた場所が、実際にはエラーではないことがわかりました。

0 投票する
11 に答える
74334 参照

sql-server - SQL Server でカーソルを使用することが悪い習慣と見なされるのはなぜですか?

SQL 7 の時代にパフォーマンス上の理由があることは知っていましたが、SQL Server 2005 にも同じ問題が存在するのでしょうか? ストアド プロシージャに個別に処理したい結果セットがある場合でも、カーソルは不適切な選択ですか? もしそうなら、なぜですか?

0 投票する
8 に答える
2029 参照

sql - カーソル/結合に関連する可能性のある問題

これが私の状況です:

表 1 には、ID を一意の識別子として使用する一連のデータが含まれています。このテーブルには、そのような他の約 6 つのテーブルとの 1 対多の関係があります。

テーブル 1 の ID が 001 の場合: テーブル 2 には外部キーを持つ 3 つの行がある可能性があります: 001 テーブル 3 には外部キーを持つ 12 行がある可能性があります: 001 テーブル 4 には外部キーを持つ 0 行がある可能性があります: 001 テーブル 5 には外部キーを持つ 28 行がある可能性があります: 001

指定された期間のテーブル 1 のすべての行と、それを参照するいくつかのテーブルに含まれるすべてのデータをリストするレポートを作成する必要があります。

擬似コードでの私の現在のアプローチは次のようになります。

これは、1 つのレポートを 1000 クエリの近隣で実行できることを意味します。これが過剰であることはわかっていますが、私の sql-fu は少し弱く、助けが必要です。

0 投票する
3 に答える
26553 参照

sql-server - カーソル対 while ループ - カーソルの長所/短所は何ですか?

カーソルの代わりに while ループを使用することをお勧めしますか?

カーソルの長所/短所は何ですか?

0 投票する
8 に答える
15264 参照

sql - @@FETCH_STATUS ストアド プロシージャをリセットする

@@FETCH_STATUS変数をリセットしたり、ストアド プロシージャで 0 に設定したりするにはどうすればよいですか?

また、FETCH_STATUS を特定のカーソルにバインドできますか?

0 投票する
5 に答える
20741 参照

sql - SQLサーバーで開いている/割り当てられたカーソルのリストを取得する方法はありますか?

いくつかのカーソルを作成して開くストアド プロシージャがあります。最後にそれらを閉じますが、エラーが発生した場合、それらのカーソルは開いたままになります! その後、カーソルを作成しようとすると、その名前のカーソルが既に存在するため、後続の実行は失敗します。

どのカーソルが存在するか、それらが開いているかどうかを照会して、それらを閉じて割り当てを解除できる方法はありますか? これは、やみくもにエラーを閉じて飲み込もうとするよりも優れていると思います。

0 投票する
13 に答える
107136 参照

sql - なぜ人々は SQL カーソルをそれほど嫌うのでしょうか?

オーバーヘッドと不便さのためにカーソルを使用する必要を避けたいと思うことは理解できますが、人々がカーソルを使用する必要を避けるために多大な努力をしている深刻なカーソル恐怖症が起こっているようです.

たとえば、ある質問では、カーソルを使用して明らかに些細なことを行う方法を尋ねられ、受け入れられた回答は、処理できる行数が 32 に制限されていても、再帰カスタム関数を使用した共通テーブル式 (CTE) 再帰クエリを使用して提案されました。 (SQL Server の再帰関数呼び出し制限のため)。これは、単純なカーソルの使用を避けるためだけに多大な努力が必要であることは言うまでもなく、システムの寿命を延ばすための恐ろしい解決策であると私は思います。

このレベルの非常識な憎しみの理由は何ですか? いくつかの「著名な権威」がカーソルに対してファトワを発行しましたか? カーソルの心臓部には、子供のモラルを堕落させる言葉にできない悪が潜んでいるのでしょうか?

Wiki の質問、担当者よりも回答に興味があります。

関連情報:

SQL Server 早送りカーソル

編集:もっと正確に言うと、通常のリレーショナル操作の代わりにカーソルを使用すべきではないことを理解しています。それは簡単です。私が理解していないのは、カーソルがより単純で/またはより効率的なソリューションである場合でも、カーソルを避けるために邪魔にならない人がいるということです。私を困惑させているのは、明らかな技術的効率ではなく、不合理な憎しみです。

0 投票する
8 に答える
26488 参照

oracle - SELECT COUNT(*)と明示カーソルを使用した2回のフェッチ

Steven Feuerstein&BillPribylによる「OraclePLSQLProgramming」(第2版)というタイトルの本を読みました。99ページに、

「ヒット」の総数を本当に知る必要がない限り、テーブルから「SELECTCOUNT(*)」を実行しないでください。一致するものが複数あるかどうかだけを知る必要がある場合は、明示カーソルを使用して2回フェッチするだけです。

例を挙げて、この点をもっと説明してもらえますか?ありがとうございました。

アップデート:

StevenFeuersteinとBillPribylは、テーブル内のレコードが存在するかどうかを確認するためにSELECT COUNT()を使用しないことを推奨していますが、代わりに明示カーソルを使用してSELECT COUNT(*)を使用しないようにするために、以下のコードを編集するのを手伝ってくれる人はいますか?このコードは、Oracleストアドプロシージャで記述されています。

テーブルemp(emp_id、emp_name、...)があるので、提供された従業員IDコレットを確認するかどうか:

0 投票する
5 に答える
14766 参照

oracle - OracleのカーソルにWHERE句を動的に追加します

v_name、v_country、v_type などの特定のパラメータを受け入れる plsql プロシージャがあります。

次のような select ステートメントを含むカーソルが必要です。

特定のパラメータが空の場合、関連する where 句のみをカーソルに追加できますか? または、これを達成するためのより良い方法はありますか?