こんにちは、ストアド プロシージャの結果を MyBinaryTable というテーブルに挿入しようとしています。MyBinaryTable には、(FileId [type:int] と BulkColumn [type:varbinary(max)]) の 2 つの列が含まれています。ストアド プロシージャは、FileId と BulkColumn という名前の 2 つの列を返します。ストアド プロシージャから 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