Sql 在存储过程上传递参数时出现问题
我已经创建了一个没有任何问题的程序。在创建过程之前,我已经进行了测试,但是当我尝试执行过程时,我只有在第一个参数中遇到了问题 SQL SERVER 2008在“Mundus”中显示错误语法Sql 在存储过程上传递参数时出现问题,sql,sql-server,excel,stored-procedures,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\T
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+'
当我在没有存储过程的情况下进行测试时,它也能正常工作。我猜
name
存储为字符串。您需要一对额外的引号:
and T.[EFP] = '''+@nameEtabb+'''