我想用openrowset函数打开一个Excel数据集,但是仍然出现错误:
begin
declare @pathname NVARCHAR(max)
set @pathname = N'\\{DATAPATH}
select @pathname
begin
exec (' drop_table mytable
select *
into mytable
from OPENROWSET(''Microsoft.ACE.OLEDB.12.0'',''Excel 12.0; IMEX=1; HDR=YES; Database =' + @pathname + ';'',
''SELECT * FROM [Sheet1$]'');
select *
from mytable')
end
这将导致:
第15级,州1,第17行的消息102
'end'附近的语法不正确。
答案 0 :(得分:0)
你好@Jędrzej_Adaszyński,欢迎来到stackoverflow! :)
您必须关闭一笔交易,您有两个交易,而您只完成了一个交易
begin
declare @pathname NVARCHAR(max)
set @pathname = N'\\{DATAPATH}
select @pathname
begin
exec (' drop_table mytable
select *
into mytable
from OPENROWSET(''Microsoft.ACE.OLEDB.12.0'',''Excel 12.0; IMEX=1; HDR=YES; Database =' + @pathname + ';'',
''SELECT * FROM [Sheet1$]'');
select *
from mytable')
end
end
答案 1 :(得分:0)
您要解决几个不同的语法问题。
首先,它看起来像您在set语句的末尾忘记了引号,然后中断了其余脚本的引号。
第二个,就像其他人提到的那样,是您有两个开始,但只有一个结束。
尝试一下:
begin
declare @pathname NVARCHAR(max)
set @pathname = N'\\{DATAPATH}'
select @pathname
begin
exec (' drop_table mytable
select *
into mytable
from OPENROWSET(''Microsoft.ACE.OLEDB.12.0'',''Excel 12.0; IMEX=1; HDR=YES; Database =' + @pathname + ';'',
''SELECT * FROM [Sheet1$]'');
select *
from mytable')
end
end