在存储过程上传递参数的问题

时间:2014-03-16 12:50:21

标签: sql sql-server excel stored-procedures

我创建了一个没有任何问题的程序。我在创建程序之前已经过测试但是当我尝试执行我的程序时,我只在第一个参数中遇到问题

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。

1 个答案:

答案 0 :(得分:1)

我的猜测是name存储为字符串。你需要一对额外的报价:

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