0

.netmvcプロジェクトで古いOracleDLLを使用すると、次のように機能します。

   cmd.CommandText = "dba.user_login";
   cmd.CommandType = CommandType.StoredProcedure;
   cmd.Parameters.Add("KUL", OracleType.VarChar).Value = userName;
   cmd.Parameters.Add("SIFRE", OracleType.VarChar).Value = pass;
   cmd.Parameters.Add("FLAG", OracleType.Float).Value = 1;
   cmd.Parameters.Add("HATA", OracleType.VarChar).Value = "error";
   cmd.Parameters.Add("result", OracleType.Float).Direction = ParameterDirection.ReturnValue;

しかし、古いoracle dllが非推奨になったため、新しいoracle.netプロバイダーを使用したいと思います。私はこれを試しました:

   cmd.CommandText = "dba.user_login";
   cmd.CommandType = CommandType.StoredProcedure;
   cmd.Parameters.Add("KUL", OracleDbType.Varchar2).Value = userName;
   cmd.Parameters.Add("SIFRE", OracleDbType.Varchar2).Value = pass;
   cmd.Parameters.Add("FLAG", OracleDbType.Single).Value = 1;
   cmd.Parameters.Add("HATA", OracleDbType.Varchar2).Value = "error";
   cmd.Parameters.Add("result", OracleDbType.Single).Direction = ParameterDirection.ReturnValue;

しかし、それは機能しません。例外:ORA-06502:PL / SQL:数値または値のエラー:文字から数値への変換エラー\ nORA-06512:1行目誰かがこれを修正するのを手伝ってもらえますか。ありがとうございました。

4

1 に答える 1

2

素晴らしい、その1つの設計上の決定は、それを使用し始めたとき(そして時折、将来的には問題につながる)常に問題につながります。

これがあなたの質問に答えたので、私は答えに私のコメントを「宣伝」します(それが適切でない場合は私に知らせてください、そして私はこの答えを削除します)

ODP.netはデフォルトで位置によってバインドされることに注意してください(デフォルトのSystem.Data.Oraからの脱却)-使用できます

BindByName = true 

コマンドオブジェクトを強制的に同じように動作させる

于 2013-02-15T13:11:32.007 に答える