在存储过程传递参数中发出

我创build了一个没有任何问题的过程。 我已经在创build过程之前进行了testing,但是当我尝试执行我的过程时,我只有第一个参数有问题

SQL SERVER 2008 SHOW ME错误语法在“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+' 

当我没有存储过程testing它的工作也OMG。

我的猜测是这个name被存储为一个string。 你需要一个额外的引号:

 and T.[EFP] = '''+@nameEtabb+'''