【发布时间】:2018-04-30 05:26:02
【问题描述】:
您好,我正在尝试将存储过程的结果插入到名为 MyBinaryTable 的表中。 MyBinaryTable 包含两列:(FileId [type:int] 和 BulkColumn [type:varbinary(max)])。存储过程返回名为 FileId 和 BulkColumn 的两列。从存储过程中将值插入 MyBinaryTable 时,我遇到了这个错误:
Implicit conversion from data type varchar to varbinary(max) is not allowed.
Use the CONVERT function to run this query.
这是我的存储过程:
CREATE PROCEDURE [dbo].[GenerateBinary] @Route VARCHAR(300), @FileId
VARCHAR(10)
AS
Declare @sql varchar(max)
Set @sql='SELECT convert(varbinary(max),((SELECT BulkColumn FROM OPENROWSET(
BULK ''' + @Route + ''' , SINGLE_BLOB) as Data)), 0) as ''BulkColumn'',''' +
@FileId + ''' as ''FileId'''
Print @sql
Exec(@sql)
这是我插入值的方式:
INSERT INTO MyBinaryTable
EXEC GenerateBinary 'xyz.docx', @FileId = 254
【问题讨论】:
-
标记您正在使用的 dbms。该代码是特定于产品的。
-
@jarlh 谢谢,我添加了以下标签 T-SQL & SQL-Server
标签: sql-server tsql stored-procedures implicit-conversion varbinarymax