在我的代码中,我将string result值传递给我的存储过程
try
{
using (SqlStoredProcedure sspObj = new SqlStoredProcedure("dbo.usp_CloseEvent", Connection, CommandType.StoredProcedure))
{
sspObj.AddParameterWithValue("@Close", SqlDbType.VarChar, 0, ParameterDirection.Input, result);
sspObj.ExecuteNonQuery();
sspObj.Dispose();
}
}
catch (Exception xObj)
{
Console.WriteLine("Error >> " + xObj.Message);
}默认SqlDbType.VarChar大小为1至8000个字符。我的问题是,如果我的string result变量变量的大小超过8000个字符,该怎么办?
解决这个问题的方法是什么?
我的存储过程如下所示
ALTER PROCEDURE [dbo].[usp_CloseEvent]
@Close VarChar(Max)
ASSqlStoredProcedure.cs
virtual public SqlParameter AddParameterWithValue(string parameterName,
SqlDbType dbType,
int size,
ParameterDirection direction,
object value) {
SqlParameter p = this.AddParameter(parameterName, dbType, size, direction);
if (value == null) {
value = DBNull.Value;
}
p.Value = value;
return p;
}数据库为SQL SERVER 2008。
发布于 2013-01-18 12:15:48
对于VARCHAR(MAX),在添加参数时,需要将-1作为大小传递。
发布于 2013-01-18 12:18:50
我的问题是:如果我的字符串变量结果的大小超过8000个字符,该怎么办?
会出现一条错误消息,表示输入数据将在字符串末尾被截断(截断意味着切断)。
解决这个问题的方法是什么?
首先,您需要检查可以向存储过程传递多少个字符,并手动更改表列。
另一种方法是使用SQL命令Alter Table更改列定义。但我不推荐这样
https://stackoverflow.com/questions/14398666
复制相似问题