我在SQL Server 2014中创建了一个Template
表,并希望创建一个添加模板(Word模板文件)和模板名称的过程。我创建了下表:
create table Template
(
PK_TemplateID int identity(1,1) primary key,
TemplateName nvarchar(30) not null unique,
TemplateFile varbinary(max) not null
);
并且以下代码插入记录:
INSERT INTO Template(TemplateName,TemplateFile)
SELECT
'SaleTemplate.dotx' AS TemplateName,
*
FROM
OPENROWSET(BULK N'C:\Users\User10\Desktop\example_file.dotx', SINGLE_BLOB) AS TemplateFile
GO
现在,我在创建插入Template表的过程时遇到了问题。这是我最接近的:
create procedure dbo.inserttemplate
@TemplateName varchar(30),
@TemplateFile varchar(200)
as
insert into Template(TemplateName, TemplateFile)
select
@TemplateName as TemplateName,
*
from
OPENROWSET(bulk @templatefile, SINGLE_BLOB) AS TemplateFile
错误如下:
'@templatefile'附近的语法不正确
但我无法弄清楚如何纠正它。有什么想法吗?
答案 0 :(得分:1)
openrowset
函数不接受参数,只接受字符串文字。您可以通过创建一个动态SQL字符串并将其传递给exec来解决此问题:
declare @sql nvarchar(max) = 'select * from openrowset(bulk ''' +
replace(@templatefile, ',', ',,') + ''', SINGLE_BLOB) AS TemplateFile'
exec (@sql)