C# 声明从C调用的MSSQL输出参数的长度#
我有一个mssql存储程序,有两个参数输入,输出C# 声明从C调用的MSSQL输出参数的长度#,c#,sqlcommand,sqlparameter,C#,Sqlcommand,Sqlparameter,我有一个mssql存储程序,有两个参数输入,输出 CREATE PROCEDURE SP_Test1 @Pi_Action INT, @Pv_ErrorMessage VARCHAR(250) OUTPUT 我正在以这种方式从应用程序执行此过程 DbManager dbManager = new DbManager(); dbManager.ProcName = "SP_Test1"; dbManager.addParam("@Pi
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;
}
在获取输出参数的值时,这只返回字符串的第一个字母。
我必须始终声明字符串参数的长度?
是否有一种方法可以避免声明字符串参数的长度并返回整个字符串
感谢您的帮助。SqlParameter类支持您未设置的Size属性。为addParam方法创建一个新的重载,该方法除了接受正在传递的现有信息外,还接受该大小,然后添加以下内容
sqlPar.Size = yourNewMethodParameterName
出于好奇,如果您在字符串parVal行暂停应用程序,并在即时窗口上查询sqlComando.Parameters[“@Pv_ErrorMessage”].Value的内容,那么响应是什么?它也是一个单字符字符串吗?您会发现一些信息,另外,还需要将SqlCommand创建添加到using语句中。