如何在 Openrowset 命令中使用变量
How to use a variable in Openrowset command
我正在尝试在 SQL Openrowset 命令中使用可变文件路径。我知道它不能显式接受变量,我需要使用动态 SQL.
目前有效的 -
SELECT @file_stream = CAST(bulkcolumn AS VARBINARY(MAX))
FROM OPENROWSET(BULK 'C:\Temp\print4.pdf', SINGLE_BLOB) AS x
但是,如果我尝试使用我的变量文件路径
declare @file_stream VARBINARY(MAX)
declare @filePath NVARCHAR(128)
set @filePath = 'C:\Temp\print4.pdf'
set @command = N'SELECT @file_stream = CAST(bulkcolumn AS varbinary(MAX))
from OPENROWSET(BULK ' + @filePath + ',
SINGLE_BLOB) ROW_SET'
EXEC sp_executesql @command, @filePath, @file_stream;
我收到错误“消息 137,级别 15,状态 2,第 15 行
必须声明标量变量“@filePath”。'
我确定这是语法问题,但还没弄清楚应该如何格式化它。
像下面这样更改您的脚本。
DECLARE @file_stream VARBINARY(MAX)
DECLARE @command nvarchar(1000)
DECLARE @filePath NVARCHAR(128)
set @filePath = 'C:\Temp\print4.pdf'
set @command = N'SELECT @file_stream1 = CAST(bulkcolumn AS varbinary(MAX))
from OPENROWSET(BULK ''' + @filePath + ''',
SINGLE_BLOB) ROW_SET'
EXEC sp_executesql @command, N'@file_stream1 VARBINARY(MAX) OUTPUT',@file_stream1 =@file_stream OUTPUT
select @file_stream
示例输出:
我正在尝试在 SQL Openrowset 命令中使用可变文件路径。我知道它不能显式接受变量,我需要使用动态 SQL.
目前有效的 -
SELECT @file_stream = CAST(bulkcolumn AS VARBINARY(MAX))
FROM OPENROWSET(BULK 'C:\Temp\print4.pdf', SINGLE_BLOB) AS x
但是,如果我尝试使用我的变量文件路径
declare @file_stream VARBINARY(MAX)
declare @filePath NVARCHAR(128)
set @filePath = 'C:\Temp\print4.pdf'
set @command = N'SELECT @file_stream = CAST(bulkcolumn AS varbinary(MAX))
from OPENROWSET(BULK ' + @filePath + ',
SINGLE_BLOB) ROW_SET'
EXEC sp_executesql @command, @filePath, @file_stream;
我收到错误“消息 137,级别 15,状态 2,第 15 行 必须声明标量变量“@filePath”。'
我确定这是语法问题,但还没弄清楚应该如何格式化它。
像下面这样更改您的脚本。
DECLARE @file_stream VARBINARY(MAX)
DECLARE @command nvarchar(1000)
DECLARE @filePath NVARCHAR(128)
set @filePath = 'C:\Temp\print4.pdf'
set @command = N'SELECT @file_stream1 = CAST(bulkcolumn AS varbinary(MAX))
from OPENROWSET(BULK ''' + @filePath + ''',
SINGLE_BLOB) ROW_SET'
EXEC sp_executesql @command, N'@file_stream1 VARBINARY(MAX) OUTPUT',@file_stream1 =@file_stream OUTPUT
select @file_stream
示例输出: