我需要将图像列的值从一行复制到另一行。我试图为此使用变量,但我什至不能声明那种类型的变量。SQL Server 返回此错误消息:
消息 2739,级别 16,状态 1,第 1 行
text、ntext 和 image 数据类型对于局部变量无效。
我需要将图像列的值从一行复制到另一行。我试图为此使用变量,但我什至不能声明那种类型的变量。SQL Server 返回此错误消息:
消息 2739,级别 16,状态 1,第 1 行
text、ntext 和 image 数据类型对于局部变量无效。
好吧,image
数据类型已被弃用,因此您应该更改表和所有要使用的代码varbinary(max)
(您必须在某个时候这样做,越快越好)。同时,一个简单的解决方法是varbinary(max)
在您的变量中使用:
DECLARE @x TABLE(i IMAGE);
INSERT @x SELECT 0x0045;
DECLARE @y VARBINARY(MAX);
SELECT @y = i FROM @x;
PRINT @y;
-- UPDATE sometable SET somecolumn = @y WHERE ...;
但是,如果您正在执行更新,为什么首先需要使用中间变量?您可以很容易地连接同一张表中的两行...
UPDATE t
SET t.image_column = s.image_column
FROM dbo.table AS t
INNER JOIN dbo.table AS s
ON t.key = something
AND s.key = something_else;
样本:
DECLARE @x TABLE(x INT PRIMARY KEY, i IMAGE);
INSERT @x SELECT 1,0x0045;
INSERT @x SELECT 2,0x0055;
UPDATE x SET x.i = y.i
FROM @x AS x
INNER JOIN @x AS y
ON x.x = 1 AND y.x = 2;
SELECT x,i FROM @x;
结果:
x i
--- ------
1 0x0055
2 0x0055