Объявите длину выходного параметра 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