問題タブ [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.

0 投票する
6 に答える
6218 参照

sql - 複雑なOracle PL/SQLカーソルロジックをビューとしてカプセル化する最良の方法は?

私はPL/SQLコードを書いて、テーブルを非正規化し、クエリを実行しやすい形式にしました。このコードでは、一時テーブルを使用して作業の一部を実行し、元のテーブルのいくつかの行を一緒にマージします。

ロジックは、リンクされた記事のパターンに従って、パイプライン化されたテーブル関数として記述されます。表関数は、PRAGMA AUTONOMOUS_TRANSACTION宣言を使用して一時表操作を許可し、カーソル入力パラメーターを受け入れて非正規化を特定の ID 値に制限します。

次に、テーブル関数をクエリするためのビューを作成し、考えられるすべての ID 値をカーソルとして渡します (関数の他の使用法はより制限されます)。

私の質問: これは本当に必要ですか? 同じことを達成するためのはるかに簡単な方法を完全に見逃していませんか?

PL/SQL に触れるたびに、入力しすぎているような印象を受けます。

更新:私が扱っているテーブルのスケッチを追加して、私が話している非正規化のアイデアをすべての人に提供します。このテーブルには、従業員の仕事の履歴が格納され、それぞれにアクティブ化行と (場合によっては) 終了行があります。従業員が複数の仕事を同時に持つことも、連続していない日付範囲で何度も同じ仕事をすることも可能です。例えば:

それを照会して、誰がいつどの仕事で働いているかを把握することは自明ではありません。EMP_IDしたがって、私の非正規化関数は、カーソルを介して渡されたすべての s について、各ジョブの日付範囲のみを一時テーブルに入力します。s 1 と 2 を渡すEMP_IDと、次のようになります。

(終了日が事前に決められていないジョブの をEND_DATE許可します。)NULL

ご想像のとおり、この非正規化形式はクエリがはるかに簡単ですが、それを作成するには (私が知る限りでは) 中間結果 (たとえば、アクティベーション行が実行されたジョブ レコード) を格納するための一時テーブルが必要です。見つかりましたが、終了ではありません...まだ)。パイプライン化されたテーブル関数を使用して一時テーブルにデータを入力し、その行を返すことは、私がその方法を理解した唯一の方法です。

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

json - JSONを自動生成するためのどのPL/SQLライブラリをお勧めしますか?

JSON 用の優れた PL/SQL ライブラリはありますか?

PL/SQL ではJSON値を JavaScript 関数に返すコードを面倒な手で書かなければなりません。JSON を自動生成するためのPL/SQL ライブラリを 1 つ見つけましたが、必要なすべてのことを実行できるわけではありません。たとえば、ライブラリ内の基本関数を拡張して、使用していた JavaScript ツリー コンポーネントが必要とする複雑なツリーのような JSON データ構造を返すことができませんでした。

注:
8 年以上運用されているシステムは、CRUD とほとんどのビジネス ロジックに PL/SQL を使用するように設計されています。PL/SQL は、mod PL/SQL を使用して、プレゼンテーション層 (HTML/JavaScript) の 90% も生成します。残りの 10% は、Oracle Reports Builder で作成されたレポート データです。

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

oracle - ストアド プロシージャのフォーマット

現在、Oracle データベースを使用しており、すべての SQL クエリにストアド プロシージャを使用しています。私が抱えている問題は、パッケージのコーディング標準がないことです。そのため、すべての開発者は、パッケージをフォーマットする方法に異なるスタイル (または場合によってはスタイルの感覚がない) を持っています。最初の再フォーマットなしでは、読みにくく、作業しにくくなります。ほとんどの場合、パッケージを作成するためにメモ帳またはメモ帳 2 を使用します。

残念ながら、私はコーディング標準を義務付けて強制する立場にありません (この時点では単なるコード モンキーです)。そのため、自分で使用できる無料の SQL コード フォーマッタを見つけて、チームの他の人に提案することを望んでいました。使用して、私の生活を楽にします。

基本的にファイルを入力として受け取り、すべてを再フォーマットする小さなアプリケーションを作成することを検討しましたが、これを行う前に、すでに利用可能で無料のそのようなツールを初めて使用する人がいるかどうかを尋ねることにしました。

では、そのようなツールを利用できる人はいますか?

0 投票する
4 に答える
15312 参照

sql - Oracle PL/SQLからのWebサービスの利用

私たちのアプリケーションは、最近多くのWebサービスとインターフェースを取っています。誰かがUTL_HTTPを使用して数年前に作成した独自のパッケージがあり、通常は機能しますが、特定のシステムで機能するには、SOAPエンベロープのハードコーディングが必要です。もっと一般的なものにしたいと思いますが、対処しなければならないシナリオの数を知る経験が不足しています。バリエーションは、宣言する必要のある名前空間と要素の形式にあります。いくつかのパラメータを使用した単純な呼び出しと、エンコードされた文字列で大量のデータを渡す呼び出しの両方を処理する必要があります。

10gにはUTL_DBWSがあることは知っていますが、オンラインのユースケースはそれほど多くありません。一般的な使用に十分な安定性と柔軟性がありますか?ドキュメンテーション

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

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

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

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

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


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


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

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

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

oracle - Lisp から Oracle plsql プロシージャを実行するにはどうすればよいですか?

どうすれば始められますか?

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

java - OracleデータベースでJavaストアドプロシージャを使用する必要があるのはいつですか...欠点は何ですか?

PL/SQLは私の母国語ではありません。Oracleは、Javaでのストアドプロシージャの記述をサポートしています。PL/SQLでストアドプロシージャを作成するよりもこれを行うことの利点は何ですか。

0 投票する
16 に答える
138271 参照

oracle - Oracle の明示的カーソルと暗黙的カーソルの違いは何ですか?

PL/SQL でのカーソル用語に少し慣れていません。誰もこれを知っていますか?

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

oracle - 大規模なバッチ処理プログラムを完全に PL/SQL で作成するのはばかげていますか?

私は、おそらく最も自然にデータベース テーブルの計算のバッチとして記述され、月に 1 回実行されるプログラムの作業を開始しています。すべての入力は Oracle データベース テーブルにあり、すべての出力は Oracle データベース テーブルになります。このプログラムは、今後何年にもわたって保守可能である必要があります。

これを一連のストアド プロシージャとして実装し、それぞれが賢明な変換を実行することは簡単に思えます。たとえば、いくつかのビジネス ルールに従って部門間でコストを分配します。その後、単体テストを作成して、各変換の出力が期待どおりかどうかを確認できます。

これをすべてPL/SQLで行うのは悪い考えですか? C# などの典型的なオブジェクト指向プログラミング言語で大量のバッチ計算を実行しますか? PL/SQL などのデータベース中心のプログラミング言語を使用する方が表現力が豊かではないでしょうか?

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

oracle - PLSQで未使用のパラメータからの警告を回避するにはどうすればよいですか?

PL SQLでは、将来の機能を準備するために、パッケージ、関数、またはプロシージャにパラメータを追加したい場合があります。例えば:

それは次のような多くの警告につながる可能性があります

これらの警告を回避するための最良の方法は何でしょうか?