我创建了一个没有任何问题的程序。我在创建程序之前已经过测试但是当我尝试执行我的程序时,我只在第一个参数中遇到问题
SQL SERVER 2008显示'Mundus'中的错误语法
ProcAvancementTotalbyEtab 'Erasmus Mundus','C:\Users\AA\Desktop\Table1.xlsx'
在我尝试这样做之后:
ProcAvancementTotalbyEtab N'Erasmus Mundus','C:\Users\AA\Desktop\Table1.xlsx'
这是我的存储过程:
alter proc ProcAvancementbyEtab
(
@nameEtabb nvarchar(50),
@FilePath nvarchar(60)
)
as
begin
EXEC
(
'
SET NOCOUNT OFF;
insert into Avancement(nameEtab)
SELECT distinct T.[EFP]
From OPENROWSET(''MICROSOFT.ACE.OLEDB.12.0'',
''Excel 12.0;Database='+@FilePath+''',
''SELECT *
FROM [Sheet1$]'') T
where T.[EFP] is not null and T.[Avancement] is not null
and
not exists (select * from Avancement where
Avancement.nameEtab=T.[EFP])
and T.[EFP]='+@nameEtabb+'
')
end
当我评论这一行时 和T. [EFP] ='+ @ nameEtabb +' 它运作正常所以我的问题就在这里
and T.[EFP]='+@nameEtabb+'
当我在没有存储过程的情况下进行测试时,它也可以使用OMG。
答案 0 :(得分:1)
我的猜测是name
存储为字符串。你需要一对额外的报价:
and T.[EFP] = '''+@nameEtabb+'''