3

我正在尝试将 pdf 文件插入 sql 表(varbinary 列)

create table pdfTest(pdfData varbinary(max))
declare @filePath varchar(100)
set @filePath = 'c:\pdfSample.pdf'
INSERT INTO pdfTest (pdfData) SELECT * FROM OPENROWSET(BULK @filePath, SINGLE_BLOB) AS BLOB

然而,这给出了一个错误

 Incorrect syntax near '@filePath'.

以下作业均无效

 set @filePath = 'c:'\pdfSample.pdf'
 set @filePath = 'c:\\pdfSample.pdf'

但是以下语法有效

 INSERT INTO pdfTest (pdfData) SELECT * FROM OPENROWSET(BULK 'c:\pdfSample.pdf', SINGLE_BLOB) AS BLOB

只是想知道如何在插入语句中使用@filePath?

谢谢

4

2 回答 2

3

我认为这里的变量名没有得到解决。尝试在动态 sql 中使用变量名。

 Declare @sql varchar(max)
 Set @sql='INSERT INTO pdfTest (pdfData) SELECT * FROM OPENROWSET(BULK'+ @filePath+', SINGLE_BLOB) AS BLOB'
 exec @sql
于 2013-08-23T20:21:16.003 回答
-1
Declare @sql nvarchar(max)
 Set @sql='INSERT INTO pdfTest (pdfData) SELECT * FROM OPENROWSET(BULK '''+ @filePath+''', SINGLE_BLOB) AS BLOB'
 exec sp_executesql  @sql
于 2015-03-25T14:16:36.737 回答