【发布时间】:2015-12-02 06:00:32
【问题描述】:
我有一个包含Email 列的表,即varchar(MAX),我正在尝试使用存储过程对其进行更新。当字符串长度大于 8000 个字符时,我收到此错误
字符串或二进制数据将被截断。该声明已 终止。
存储过程:
ALTER PROCEDURE [dbo].[SaveData]
@Id BIGINT,
@Email varchar(max)
AS
BEGIN
SET NOCOUNT ON;
UPDATE tb_data
SET Email = @Email
WHERE Id = @Id
END
请注意,电子邮件的数据类型设置为varchar(MAX)
有趣的是,当我尝试手动运行更新查询时,它可以工作!
我已经这样做了好几次,但无法弄清楚为什么它在这种情况下不起作用。
【问题讨论】:
-
如果表中的列是varchar(MAX),为什么存储的proc参数是nvarchar(max)?
-
我想知道为什么电子邮件地址超过 8000 个字符? ,这个链接可以帮到你sqlservercentral.com/Forums/Topic647815-145-1.aspx
-
使用 sql 配置文件查找从您的应用传递的实际数据。
-
@Harsh:已修复。它只是 varchar。
-
@JapzDivino:此列将保存电子邮件模板而不是电子邮件 ID。
标签: sql sql-server-2012