简体   繁体   English

OpenRowset带有动态sql变量插入查询

[英]OpenRowset with dynamic sql variable insert query

I want to execute this query. 我想执行此查询。 Because only OPENROWSET don't work with variable : 因为只有OPENROWSET不能使用变量:

EXEC
 (
 '
 Insert into Table1 
 SELECT *
From OPENROWSET(MICROSOFT.ACE.OLEDB.12.0',
'Excel 12.0;Database=C:\Users\AA\Desktop\Table1.xlsx',
'SELECT *
 FROM [Sheet1$] ) '
)

For insert in a table on SQL Server 2008 with a variable SQL. 用于在SQL Server 2008上的表中插入带有变量SQL的表。 My objectif is to make the filepath dynamic like database='+@FilePath+' 我的目标是使文件路径动态,如database ='+ @ FilePath +'

Finally using this code in ado.Net in openFiledialog control 最后在openFiledialog控件中的ado.Net中使用此代码

But it doesn't work I get a syntax error 但它不起作用我得到语法错误

I have solved but without insert query I think the same thing with insert always escape the quotes like that 我已经解决但没有插入查询我认为插入总是逃避这样的引号

EXEC
 (
'SELECT *
From OPENROWSET(''MICROSOFT.ACE.OLEDB.12.0'',
''Excel 12.0;Database=C:\Users\AA\Desktop\Table1.xlsx'',
''SELECT *
 FROM [Sheet1$]'') T
 ')

and with FilePath : 和FilePath:

Declare 
@FilePath nvarchar(50)
SET @FilePath='C:\Users\AA\Desktop\Table1.xlsx'
 EXEC
 (
'SELECT *
From OPENROWSET(''MICROSOFT.ACE.OLEDB.12.0'',
''Excel 12.0;Database='+@FilePath+''',
''SELECT *
 FROM [Sheet1$]'') T
 ')

Your need to use dynamic sql for this And also it best to explicitly use Column Names in your INSERT INTO and SELECT statements. 您需要为此使用动态sql并且最好在INSERT INTO和SELECT语句中显式使用列名。 you can do something as follows. 你可以做如下的事情。

DECLARE @SheetName NVARCHAR(MAX);
DECLARE @FilePath  NVARCHAR(MAX);
DECLARE @Sql       NVARCHAR(MAX);

SET @Sql =  N' INSERT INTO Table1 '                            +
            N' SELECT *  '                                     +
            N' FROM OPENROWSET(''Microsoft.ACE.OLEDB.12.0'', ' +
            N' ''Excel 8.0;Database='+ @FilePath + ';'' ,'     +
            N' ''SELECT* FROM ['+ @SheetName +']'')' 

EXECUTE sp_executesql @Sql

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM