- - PR -
OracleClientを使用したストアドのoutからの値取得について
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-10-23 18:05
"189923351682"
この値は変数に入っていると思いますが、 それが数値型の変数である場合は、 パラメーターの「値」ではなく「値の型」と判断されている可能性があります。 MSDN OracleParameterCollection.Add メソッドより引用 ------------------------------------------------------------------- Add メソッドのこのオーバーロードを使用して整数のパラメータ値を指定する場合は、注意する必要があります。このオーバーロードは Object 型の value を受け取るため、次の C# の例のように、値が 0 の場合に整数値を Object 型に変換する必要があります。 parameters.Add("pname", Convert.ToInt32(0)); この変換を行わないと、コンパイラは、 OracleParameterCollection.Add (string 、 OracleType) オーバーロードを呼び出そうとしていると見なします。 ------------------------------------------------------------------- コマンドを実行する前に、 パラメーターの型や値が期待通りに入っているかをデバッグ出力してみてはどうでしょうか。 <追記> OracleParameterCollection.Add メソッドの引数のパターンを確認してみてください。 Direction をとるものはないようですよ。 [ メッセージ編集済み 編集者: masa 編集日時 2006-10-23 18:13 ] |
|
投稿日時: 2006-10-23 18:36
masaさんお返事ありがとうございます。
とりあえずもう少し検証してみます。 そこでもう少し質問なのですがPL/SQLの デバッグというのはどのようにするのが 一般的でよいのでしょうか。 わかれば助言下さい。 宜しくお願いします。 |
|
投稿日時: 2006-10-23 18:53
> cmd.Parameters.Add("tesout", OracleClient.OracleType.VarChar, OarameterDirection.Output)
これ、 Direction = Output でなく、 Size = Outputに対応する整数値 として渡されていませんか? > そこでもう少し質問なのですがPL/SQLの > デバッグというのはどのようにするのが > 一般的でよいのでしょうか。 大きなストアドだとかなり大変なんですよね。 私は SQLPlus + ObjectBrowser です。 Oracle から VisualStudio に統合できる開発用ツールが出ていますが、 ダウンロードしただけでインストールしていないです。 SQLPlus を使うならこのあたりを参考にしてみてはどうでしょう。 Oracle PL/SQL 編16 - デバッグメッセージ表示、dbms_output.put_line http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/sq_pl16.htm <追記> ひょっとして私が書き込んだ「デバック出力してみては」という部分でしょうか。 PLSQLでなく、VB上でブレークポイントを設定して cmd の中身を見てみてくださいという意味です。 おそらく、Direction が Input になっているかと。 [ メッセージ編集済み 編集者: masa 編集日時 2006-10-23 18:55 ] [ メッセージ編集済み 編集者: masa 編集日時 2006-10-23 19:00 ] |
|
投稿日時: 2006-10-23 19:46
masaさん何度もお返事頂いてありがとうございます。
いわれたとおりdirectionのプロパティを確認したところ cmd.Parameters(1).Direction 上記がINPUTになっていました。 よって Dim tesout As OracleClient.OracleParameter = _ cmd.Parameters.Add("tesout", OracleClient.OracleType.VarChar, 20) cmd.Parameters(1).Direction = ParameterDirection.Output としたところエラーもなくかつ tesout.Value.ToString で値を取得できました。 ありがとうございます。 本日より初のPLSQLの業務を行っているのですが 周りに知ってる人がいなく悪戦苦闘中です。 SQLPLUSを使用してのdebug方法をがんばって みてみます。 ありがとうございました。 |