我一直被困在一个动态 sql 问题上。我需要能够将 varbinary (byte[]) 数据保存到我的表中。
这是示例代码,只是为了显示我的问题:
ALTER PROCEDURE ins_photo
@schema VARCHAR(63), @name VARCHAR(50), @data VARBINARY(MAX)
AS
PRINT @data;
EXEC ('
PRINT '''+@data+''';
DECLARE @plswork VARBINARY(MAX) = CAST('''+@data+''' AS VARBINARY(MAX))
PRINT @plswork;
INSERT INTO '+@schema+'.Tester
(name, photo)
VALUES
(
'''+@name+''',
@plswork
)
')
这是输出:
0xFFD8FFE000104A4649460001010000
?????A
0x3F3F3F3F3F410100
(1 row(s) affected)
正如您在转换中会注意到的那样,初始二进制数据和“转换后的”是不同的,因此在检索二进制数据以显示图像时......很好,什么也没有:)
我真的很感激帮助,甚至是解决方法,但主要的是这个usp需要根据模式调用不同的表。(因此为什么我使用动态 sql)
我可以将图像保存为 nvarchar(max) 并在客户端使用 ToBase64String() 吗?,我认为这是一个糟糕的解决方案,但不太确定
提前感谢马可