首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >达到SqlDbType.VarChar最大尺寸

达到SqlDbType.VarChar最大尺寸
EN

Stack Overflow用户
提问于 2013-01-18 12:09:48
回答 2查看 2.3K关注 0票数 1

在我的代码中,我将string result值传递给我的存储过程

代码语言:javascript
复制
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个字符,该怎么办?

解决这个问题的方法是什么?

我的存储过程如下所示

代码语言:javascript
复制
ALTER PROCEDURE [dbo].[usp_CloseEvent]
    @Close      VarChar(Max)
AS

SqlStoredProcedure.cs

代码语言:javascript
复制
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。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-18 12:15:48

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

票数 3
EN

Stack Overflow用户

发布于 2013-01-18 12:18:50

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

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

解决这个问题的方法是什么?

首先,您需要检查可以向存储过程传递多少个字符,并手动更改表列。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14398666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档