問題タブ [plsql]
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 - ループでエラーが発生しても続行
以下のループは、さまざまな「こと」を行う proc を呼び出すものです。
例外をスローする必要がある場合は、それを「発生」させます。私はそれをキャッチして無視し、ループが配列内の次の値の処理を続行できるようにしたいと考えています。
ありがとう
oracle - PL/SQL: 2 つの関数間で渡されるカーソルからのフェッチ
弱く型付けされたカーソルから結果をフェッチすることについて簡単な質問がありますが、以前にこの問題に遭遇したことがあるかどうか疑問に思っていましたか?
私のセットアップは次のとおりです。
内部機能;
呼び出し関数;
ハーネス コードをテストします。
テスト ハーネス コードを実行すると発生するエラーは次のとおりです。
ORA-06504: PL/SQL: 結果セット変数または問合せの戻り型が一致しません
何が原因でこれが発生するのか、私にはよくわかりません。私のテストコードでエラーが発生していますが、これとまったく同じ方法を何百回も使用しており、この問題は発生していません。唯一の違いは、カーソルが 1 つではなく 2 つの関数を介して戻されることです。
ここで何が問題なのか、誰にも分かりますか?私はそれについてグーグルで検索しましたが、見つけることができるのは、カーソルを強く入力するための提案だけです。残念ながら、これはオプションではありません。
誰でもできる助けに感謝します、乾杯。
oracle - ネットワークの停止により、DB リンクを介したストアド プロシージャのクエリが永久にハングする
私がサポートする多くのストアド プロシージャは、WAN 経由でリモート データベースにクエリを実行します。ネットワークはときどきダウンしますが、これまでに起こった最悪の事態は、手順が失敗し、再起動する必要があったことです。
ここ数週間、不吉な方向に進んでいます。手順が失敗する代わりに、奇妙なロック状態でハングします。これらは Oracle 内で強制終了することはできず、それらが存在する限り、プロシージャの他のコピーを実行しようとするとハングします。私たちが見つけた唯一の解決策は、OS からの「kill -9」で問題のあるプロシージャを強制終了することです。これらの手順の一部は、数か月、さらには数年も変更されていないため、DB または DB 構成に根本的な原因があると思われます。
問題を解決するために私たちができることについて何か考えがある人はいますか? または、PL/SQL には、プログラムで処理できる例外を作成できるように、コードに追加できるタイムアウト メカニズムがありますか?
sql - Oracle DUP_VAL_ON_INDEX 例外を無視するのはどれほど悪いことですか?
ユーザーがオブジェクトを少なくとも 1 回表示したかどうかを記録しているテーブルがあるため、次のようになります。
両方のフィールドは NOT NULL であり、一緒に主キーを形成します。
私の質問は、誰かが (最初のオブジェクトの後) 何回オブジェクトを表示したかは気にしないので、挿入を処理するための 2 つのオプションがあるということです。
- SELECT count(*) ... を実行し、レコードが見つからない場合は、新しいレコードを挿入します。
- 常にレコードを挿入し、DUP_VAL_ON_INDEX 例外 (そのようなレコードが既に存在することを示す) をスローする場合は、それを無視します。
2 番目のオプションを選択することの欠点は何ですか?
アップデート:
「例外によるオーバーヘッドは、最初の選択によるオーバーヘッドよりも悪いですか?」
sql - PL/SQLブロックからSELECT文を出力することはできますか?
PL/SQL ブロックを取得して、SELECT
文の結果を平文を実行した場合と同じ方法で出力するにはどうすればよいSELECT
ですか?
たとえば、SELECT
好きなことをする方法:
ヒント:
動作しません。
sql - Oracle でのピボット テーブルの使用に関するアドバイス
レポートが必要なので、ピボット テーブルを使用する必要があります。レポートはカテゴリ別にグループ化されます。カテゴリが多いため、case when ステートメントを使用するのは適切ではありません。Northwind データベースをサンプルと考えることができ、すべてのカテゴリが列として表示されます。レポートには、カテゴリ間の顧客の好みが表示されます。私は別の解決策を知りません。Sql Server のインターネットのストアド プロシージャの例を見ました。
ありがとう
plsql - PLSQL データベースのバックアップを作成するにはどうすればよいですか?
PLSQL データベースのバックアップを作成するにはどうすればよいですか?
oracle - PL/SQLを使用してExpとImpを実行するにはどうすればよいですか
PL/SQLを使用してExpとImpを実行するにはどうすればよいですか?
oracle - Oracle 関数の同時実行
私は現在、挿入の一部として使用されるファンキーな英数字コードを生成するカスタム定義関数を Oracle 10g で実行する INSERT TRIGGER を持っています。
関数 (またはトリガー) がスレッドセーフであることを確認して、2 人のユーザーが同時にトリガーをアクティブにした場合、トリガー内で使用される関数が両方のユーザーに対して同じコードを返さないようにする必要があります。
トリガーのフローは次のとおりです。
始める
- ビジネス ロジックに基づいて続行する必要があるかどうかを判断する
- カスタム関数を実行して新しいコードを取得する
- 返されたコードを別のテーブルへの挿入として使用する
終わり
主な問題は、ステップ 2 の実行中に別のスレッドがトリガーを起動し、これもステップ 2 に入り、最初のスレッドと同じコードを返す場合です。(これが非常に厳しい状況であることは理解していますが、対処する必要があります)。
これを行う主な方法として、次の 2 つを考えました。
私がこれまでに考えた最善の方法は、トリガーの開始時にトリガーで使用されるテーブルを「排他モード」でロックし、ロックの NOWAIT 属性を指定しないことです。このようにして、その後のトリガーのアクティブ化は、ロックが使用可能になるのを一種の「停止して待機」し、他のスレッドがトリガーで終了するのを待ちます。
テーブルの読み取りを拒否するテーブルをロックしたいのですが、Oracleでこれを行う方法を見つけたようです。
私のアイデアは理想的ではありませんが、うまくいくはずですが、これについてより良いアイデアを持っている人から聞いてみたいです!
与えられた助けに感謝します。
乾杯、マーク
regex - 正規表現の特殊文字がエスケープされた文字列を返すPL/SQL関数
文字列を受け取り、同じ文字列を返しますが、正規表現文字の前にバックスラッシュが付いている既存の PL/SQL メソッドはありますか?