- 締切済み
ストアドプロシージャに渡された引数の参照方法
コンパイル済のVB6のプログラムからストアドプロシージャをCALLして いるのですが、実際にどのような値を渡しているのかを調べなければなりません。 VB6の開発環境があれば容易いのですが、現在実行環境しかない為ORACLE側での 調査が必要です。 全てのプロシージャに出力ロジックを追加すれば良いのですが、 数が多すぎて対応に困っております。 ツールや方法論等につきまして、どなたかご存知でしたらご教授頂けると助かります。 環境は以下の通りです。 Client: WindowsXP SP3 VB6で作成したEXE Server: Linux(Red hat linux) ORACLE 11g Standard PL/SQLで作成したStoredProcedure ちなみに、JdeveloperやOracle SQL Developerも調べて見たのですが、 お恥ずかしながら、今一理解が出来ませんでした。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- k_o_r_o_c_h_a_n
- ベストアンサー率55% (526/942)
セッショントレースで、捕まえられないのなら・・ オラクルがキャッシュしているSQLを見る位しか思いつかないんですが、 データディクショナリのv$sqlやv$sqltextを見ると今実行中のSQLを確認できます。 v$sessionと絡めれば、どのクライアントからリクエストなのかも切り分けできますよ。 ただし、バインド変数を使っていると、バインド変数名が表示された気がしますけどね。 SQL文を提示するといいんですが、今手元に環境がないので、ご自分で試行錯誤してみてください。 (昔、どっかの掲示板で書いてあげた思い出はあるんですが、見つけられませんでした)
- k_o_r_o_c_h_a_n
- ベストアンサー率55% (526/942)
セッショントレースを採れば、どんなSQLを投げているのか判ると思いますよ。 トレースの取り方は、マニュアルを確認されるとよいと思います。 まあ、こんな感じで難しいわけではないですけどね。 http://www.geocities.jp/principal_focuses/tech/ora/ora_turne/ora_turne_210.html 他にも、オラクルのシステム表に最近リクエストされたSQLはキャッシュされているので、 それを確認する方法もありますが、トレースの方が後でじっくり見れるので、お勧めだと 思います。
お礼
ご回答ありがとうございます。 私の文章の書き方が悪かったのですが、 VBのプログラムからストアドプロシージャを呼び出す時に 渡している引数(パラメータ)の内容を調べたいと考えております。
お礼
補足ありがとうございます。 v$sql_bind_captureよりバインド変数を参照する方法ですね。 了解しました。