1

在我的代码中,我将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)
AS

SqlStoredProcedure.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

4

2 回答 2

3

对于 a VARCHAR(MAX),您需要在添加参数时传递 -1 作为大小。

于 2013-01-18T12:15:48.860 回答
0

我的问题是:如果我的字符串变量结果的大小超过 8000 个字符怎么办?

将出现一条错误消息,指出输入数据将在字符串末尾被截断(截断意味着截断)。

什么是解决方案?

我认为首先您检查可以将多少个字符传递给存储过程并手动更改表列。

另一种方法是使用 SQL 命令更改列定义Alter Table。但我不推荐这种方式

于 2013-01-18T12:18:50.050 回答