【发布时间】:2013-05-07 08:31:00
【问题描述】:
我遇到了一个动态 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() 吗?我认为这是一个糟糕的解决方案,但不太确定
提前致谢 马可
【问题讨论】:
标签: sql sql-server