現在、System.Data.OracleClientを使用してオラクルアクセスを行っているのですが
下記のような現象が出ています。
実行環境
実行環境1.オラクルサーバ:oracle 12c オラクルクライアント:oracle 11g
実行環境2.オラクルサーバ:oracle 12c オラクルクライアント:oracle 12c
C#のプログラムでSystem.Data.OracleClientを使用しプロシージャを実行した場合、
実行環境1では、期待している値が正しく戻ってきます。
実行環境2では期待した値が戻ってこなくプロシージャをうまく実行できてないような動きです。
oracle12cではSystem.Data.OracleClientを使用してプロシージャを実行できなくなってしまったのでしょうか?
以下、処理内容
DBオープン等は省略
既にインスタンス生成されている「OracleCommand cmd」
cmd.CommandText = 「プロシージャ名」;
cmd.CommandType = System.Data.CommandType.StoredProcedure;
OracleParameter パラメータ変数 = cmdPLSQL.Parameters.Add("xxxx", System.Data.OracleClient.OracleType.VarChar, 2);
パラメータ変数.Value = 渡す値;
OracleParameter 戻り値変数 = new OracleParameter("return", System.Data.OracleClient.OracleType.VarChar, 1);
戻り値変数.Direction = System.Data.ParameterDirection.Output;
cmd.Parameters.Add(戻り値変数);
cmd.ExecuteNonQuery();
戻り値= (戻り値変数.Value.ToString();
追記
プロシージャの出力変数はvachar2で文字列1文字がセットされます。
出力変数のOracleParameterの型をVarChar⇒char(固定長)にし
サイズを3倍にしたら値が返ってくるようになりましたが
原因はまだ分かっておりません。