我的表包含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)
有趣的是,当我尝试手动运行更新查询时,它可以工作!
我已经多次这样做了,但无法弄清楚为什么它在这种情况下不起作用。
答案 0 :(得分:-1)
希望这可以帮到你:
Maximum Capacity Specifications for SQL Server
1个字节= 1个字符>> 2 ^ 31-1个字符
varchar [(n | max)]
可变长度的非Unicode字符串数据。 n定义字符串长度,可以是1到8,000之间的值。 max表示最大存储大小为2 ^ 31-1个字节(2 GB)。存储大小是输入数据的实际长度+ 2个字节。 varchar的ISO同义词是char变化或字符变化。