Объявите длину выходного параметра MSSQL, вызываемого из C#

У меня есть процедура хранения mssql с двумя параметрами ввода, вывода.

CREATE PROCEDURE SP_Test1
        @Pi_Action          INT,
        @Pv_ErrorMessage    VARCHAR(250)    OUTPUT

Я выполняю эту процедуру из своего приложения таким образом.

DbManager dbManager = new DbManager();
dbManager.ProcName = "SP_Test1";
dbManager.addParam("@Pi_Action", SqlDbType.Int, ParameterDirection.Input, 3);
dbManager.addParam("@Pv_ErrorMessage", SqlDbType.VarChar, ParameterDirection.Output, null);
        bool resultado = dbManager.executeProc();

У меня есть класс с именем DbManager с двумя методами.

    public void addParam(string paramName, SqlDbType paramType, ParameterDirection paramDirection, object paramValue)
    {
      parametros.Add(new Parametro(paramName, paramType, paramDirection, paramValue));
    }

    public bool executeProc()
    {
        using (SqlConnection sqlConnection = new SqlConnection(connStr))
        {
           SqlCommand sqlComm = new SqlCommand();
           sqlComm.Connection = sqlConnection;
           sqlComm.CommandText = ProcName;
           sqlComm.CommandType = CommandType.StoredProcedure;

           SqlParameter sqlPar = null;
           foreach(Parametro parametro in parametros)
           {
              sqlPar = new SqlParameter();
              sqlPar.ParameterName = parametro.paramName;
              sqlPar.SqlDbType = parametro.paramType;
              sqlPar.Direction = parametro.paramDirection;
              sqlPar.Value = parametro.paramValue;
              //sqlPar.Size = 300;
              sqlComm.Parameters.Add(sqlPar);
           }
           sqlConnection.Open();
           sqlComm.ExecuteNonQuery();

           String parVal = (String)sqlComando.Parameters["@Pv_ErrorMessage"].Value;

           return true;
         }

В то время, когда я получаю значение выходного параметра, это возвращает мне только первую букву строки. Я всегда должен объявлять длину строковых параметров? Существует способ, которым я могу избежать, чтобы объявить длину строковых параметров и вернуть мне всю строку?

Спасибо за вашу помощь.

1 ответ

Класс SqlParameter поддерживает свойство Size, которое вы не устанавливаете. Создайте новую перегрузку для вашего метода addParam, которая принимает размер в дополнение к существующей информации, которую вы передаете, а затем добавьте следующее...

sqlPar.Size = yourNewMethodParameterName
Другие вопросы по тегам