- - PR -
OracleClientを使用したストアドのoutからの値取得について
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-10-23 17:27
いつもお世話になっています。
今回Oracle8.1.6上にあるストアドを実行し 戻り値を取得したいのですが (vb.net2003 oracleclient使用 odpではなく) サンプルなどをみながらPG作成してみたのですが 引数の型が正しくないとエラーとなってしまいます。 ストアド PROCEDURE abc(test in varchar,tesout out varchar) IS w_tflg NUMBER(01); BEGIN select distinct denno INTO tesout from PROG_TBL where denno = test; EXCEPTION WHEN others THEN w_tflg := 9; END abc; VB.net ''接続文字列などのセット cmd.Parameters.Add("test", "189923351682") Dim tesout As OracleClient.OracleParameter = _ cmd.Parameters.Add("tesout", OracleClient.OracleType.VarChar, ParameterDirection.Output) cnn.Open() cmd.ExecuteNonQuery() 上記Executeの部分でエラーとなってしまいます。 http://www.atmarkit.co.jp/fdb/rensai/odpdotnet03/odpdotnet03_2.html アドレスを参考にしたのですが・・・ わかる方おられましたら宜しくお願いします。 | ||||||||
|
投稿日時: 2006-10-23 17:42
にも書いてあるけど。 そもそもストアドを呼ぶのに引数渡さないで どうやってストアドはtestって値が189923351682 で有る事を判るんですかね? _________________ Inspired Ambitious ISMS Assistant Auditor | ||||||||
|
投稿日時: 2006-10-23 17:47
引数の型が正しくなければエラーが発生するのは当然だと思いますが、
引数の型が正しくないと"いう"エラーが発生するのですか? ところで、MSDN には、8.1.7 以降をサポートするとあります。 oracle8.0.5にsystem.data.oracleclientで接続時に文字化け http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=33545&forum=7&6 のようなスレッドもあがってますね。 | ||||||||
|
投稿日時: 2006-10-23 17:48
NAOさんお返事ありがとうございます。
VB側のコードを省略した部分があったので のせます(すいません。) Dim cnn As New OracleClient.OracleConnection(System.Configuration.ConfigurationSettings.AppSettings("ORA")) Dim cmd As New OracleClient.OracleCommand("MsyoridMk2", cnn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Add("test", "189923351682") Dim tesout As OracleClient.OracleParameter = _ cmd.Parameters.Add("tesout", OracleClient.OracleType.VarChar, ParameterDirection.Output) cnn.Open() cmd.ExecuteNonQuery() としています。 申し訳ありませんでした。 | ||||||||
|
投稿日時: 2006-10-23 17:53
いや…だからさ… ストアドに値を入れる指定は何処でしてるの? 自分が書いたコードと
よく見比べてみたらどうですか? _________________ Inspired Ambitious ISMS Assistant Auditor | ||||||||
|
投稿日時: 2006-10-23 17:55
> cmd.Parameters.Add("test", "189923351682")
型が違うのはこっちだったりして。 MSDNの「DataAdapter によるパラメータの使用」によると、 string は NVarcher に推論されるとあります。 NVarcher から Varchar への変換がうまくいかなければ「型が違う」となるかもしれません。 ※試してはいません。 | ||||||||
|
投稿日時: 2006-10-23 17:56
masaさんお返事ありがとうございます。
ちなみにエラーメッセージの内容は引数の数または型が正しくありません。 PLS-00306と出ます。 宜しくお願いします。 | ||||||||
|
投稿日時: 2006-10-23 18:03
NAOさん、masaさんお返事ありがとうございます。
ちなみにストアドの方の引数をtest in varcharのみにして 実行してみたところエラーとならず処理が終了しました。 しかし値を返していないのでSQLがきちんと実行されて 値が取得できたかどうかはわかりませんが・・・ 宜しくお願いします。 |