2

'C#'のSPを'ODP.net'で使用する際に問題が発生します。

これを実行している間:

            List<OracleParam> param = new List<OracleParam>();
            param.Add(new OracleParam("IdEstivantIn", OracleDbType.Decimal, estivant.IdEstivant, ParameterDirection.Input));
            param.Add(new OracleParam("NomIn", OracleDbType.NClob, estivant.Nom, ParameterDirection.Input));
            param.Add(new OracleParam("PrenomIn", OracleDbType.NClob, estivant.Prenom, ParameterDirection.Input));
            param.Add(new OracleParam("FixeIn", OracleDbType.NClob, estivant.Fixe, ParameterDirection.Input));
            param.Add(new OracleParam("PortableIn", OracleDbType.NClob, estivant.Portable, ParameterDirection.Input));
            param.Add(new OracleParam("MailIn", OracleDbType.NClob, estivant.Mail, ParameterDirection.Input));
            param.Add(new OracleParam("RueIn", OracleDbType.NClob, estivant.Rue, ParameterDirection.Input));
            param.Add(new OracleParam("NumeroRueIn", OracleDbType.NClob, estivant.NumeroRue, ParameterDirection.Input));
            param.Add(new OracleParam("CodePostaleIn", OracleDbType.NClob, estivant.CodePostal, ParameterDirection.Input));
            param.Add(new OracleParam("VilleIn", OracleDbType.NClob, estivant.Ville, ParameterDirection.Input));
            param.Add(new OracleParam("PaysIn", OracleDbType.NClob, estivant.Pays, ParameterDirection.Input));
            //param.Add(new OracleParam("PaysIn", OracleDbType.RefCursor, null, ParameterDirection.ReturnValue));

            con.ExecuteReturn(CommandType.StoredProcedure, "TAMARIS.PACKAGE_EST.updateEst", param);

このエラーが発生します:

ORA-12704: character set mismatch
ORA-06512: at "TAMARIS.PACKAGE_EST", line 94
ORA-06512: at line 1

私のDBでは、PKは数値であり、他のすべてのフィールドはNCLOBです。

私のSPの仕様は次のとおりです。

PROCEDURE updateEst (
      IdEstivantIn IN number,
      NomIn IN nclob ,
      PrenomIn IN nclob,
      FixeIn IN nclob,
      PortableIn IN nclob,
      MailIn IN nclob,
      RueIn IN nclob,
      NumeroRueIn IN nclob,
      CodePostaleIn IN nclob,
      VilleIn IN nclob,
      PaysIn IN nclob) IS
 BEGIN

別のSPで、私は別の問題を抱えています。

エラーは次のとおりです。

ORA-06550: line 1, column 15:
PLS-00306: wrong number or types of arguments in call to 'INSERTEST'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

私がかける電話:

            param.Add(new OracleParam("Nom_in", OracleDbType.NClob, estivant.Nom, ParameterDirection.Input));
            param.Add(new OracleParam("Prenom_in", OracleDbType.NClob, estivant.Prenom, ParameterDirection.Input));
            param.Add(new OracleParam("Fixe_in", OracleDbType.NClob, estivant.Fixe, ParameterDirection.Input));
            param.Add(new OracleParam("Portable_in", OracleDbType.NClob, estivant.Portable, ParameterDirection.Input));
            param.Add(new OracleParam("Mail_in", OracleDbType.NClob, estivant.Mail, ParameterDirection.Input));
            param.Add(new OracleParam("Rue_in", OracleDbType.NClob, estivant.Rue, ParameterDirection.Input));
            param.Add(new OracleParam("NumeroRue_in", OracleDbType.NClob, estivant.NumeroRue, ParameterDirection.Input));
            param.Add(new OracleParam("CodePostale_in", OracleDbType.NClob, estivant.CodePostal, ParameterDirection.Input));
            param.Add(new OracleParam("Ville_in", OracleDbType.NClob, estivant.Ville, ParameterDirection.Input));
            param.Add(new OracleParam("Pays_in", OracleDbType.NClob, estivant.Pays, ParameterDirection.Input));
            param.Add(new OracleParam("", OracleDbType.Int32, null, ParameterDirection.ReturnValue));

            con.ExecuteStoredReturn(CommandType.StoredProcedure, "PACKAGE_EST.insertEst", param);

私は何を逃しましたか?varcharsの代わりにNClobsを使用しているからですか?

ここで何が起こっているのか本当にわかりませんが、それは単純なエラーであるに違いないと思います。

4

0 に答える 0