Dapper - La procédure stockée oracle ne renvoie pas de résultat, si plus de deux paramètres OUT

dapper out-parameters stored-procedures

Question

Peut m'aider Je ne reçois pas de résultat dans Mon code? si j'utilise Dapper.

using(var connection = new OracleConnection("User ID=TEST;Password=TEST;data source=R_TEST"))
        {
                connection.Open();

                var p = new OracleDynamicParameters();
                p.Add("V_IN", "123456789874");
                p.Add("VO_T1", dbType: DbType.Int32, direction: ParameterDirection.Output);
                p.Add("VO_T2", dbType: DbType.Varchar2, direction: ParameterDirection.Output);
                p.Add("VO_T3", dbType: DbType.Int32, direction: ParameterDirection.Output);
                p.Add("VO_T4", dbType: DbType.Varchar2, direction: ParameterDirection.Output);
                p.Add("VO_T5", dbType: DbType.Varchar2, direction: ParameterDirection.Output);

                var result = connection.Query("WS_PKG.MY_PROCEDURE", p, commandType:  CommandType.StoredProcedure);
       }

Byt si j'essaie d'obtenir un résultat en utilisant le code de la main. Utilisez SqlDataReader. Je réussis le résultat.

Regardez ce code. J'utilise avec SqlDataReader:

connection.Open();


                    OracleCommand command = new OracleCommand("WS_PKG.GETINFOFROMNBBYIIN", connection);
                    command.CommandType = CommandType.StoredProcedure;
                    command.BindByName = true;

                    command.Parameters.Add("V_IN", OracleDbType.Varchar2, 25, iin, ParameterDirection.Input);
                    var VO_T1 = command.Parameters.Add("VO_T1", OracleDbType.Int32, 10, default(int), ParameterDirection.Output);
                    var VO_T2 = command.Parameters.Add("VO_T2", OracleDbType.Varchar2, 1024, default(string), ParameterDirection.Output);
                    var VO_T3 = command.Parameters.Add("VO_T3", OracleDbType.Int32, 10, default(int), ParameterDirection.Output);
                    var VO_T4 = command.Parameters.Add("VO_T4", OracleDbType.Varchar2, 1024, default(string), ParameterDirection.Output);
                    var VO_T5 = command.Parameters.Add("VO_T5", OracleDbType.Varchar2, 1024, default(string), ParameterDirection.Output);


                    command.ExecuteNonQuery();

Merci pour votre aide les gars.

Réponse populaire

Bonne journée. J'ai oublié d'ajouter la variable de taille. Regardez l'exemple de code:

enter code hereusing(var connection = new OracleConnection("User ID=TEST;Password=TEST;data source=R_TEST"))
    {
            connection.Open();

            var p = new OracleDynamicParameters();
            p.Add("V_IN", "123456789874");
            p.Add("VO_T1", dbType: DbType.Int32, direction: ParameterDirection.Output, size: 1);
            p.Add("VO_T2", dbType: DbType.Varchar2, direction: ParameterDirection.Output, size: 4000);
            p.Add("VO_T3", dbType: DbType.Int32, direction: ParameterDirection.Output,size: 1);
            p.Add("VO_T4", dbType: DbType.Varchar2, direction: ParameterDirection.Output,size: 50);
            p.Add("VO_T5", dbType: DbType.Varchar2, direction: ParameterDirection.Output, size: 50);

            var result = connection.Query("WS_PKG.MY_PROCEDURE", p, commandType:  CommandType.StoredProcedure);
   }

Nous devons ajouter une variable de taille. Merci tout le monde. J'ai décidé cette question.



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi