【问题标题】:SQL Server Dynamic SQL "Quote hell" with OPENDATASOURCE带有 OPENDATASOURCE 的 SQL Server 动态 SQL“引用地狱”
【发布时间】:2013-01-13 00:52:20
【问题描述】:

我想构建一个从 Excel 文件中检索数据的参数化 SQL 查询。

Excel 文件的名称每年都会改变。

这是在 T-SQL 中运行良好的查询(在 SQL Server 2008 R2 Express 上):

SELECT * INTO MobilityData FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Data Source=\\UNCPath\Annual_Mobility_Update\DAM2013-3.xls;Extended Properties=Excel  8.0')...
[Sheet1$]

(UNC 路径是网络 UNC 路径,工作正常)

字符串“DAM2013-3.xls”将逐年变化。我想做的是执行一个参数化的存储过程并动态构建动态 SQL...

类似这样的:

SELECT @sQry='SELECT * INTO MobilityData FROM OPENDATASOURCE(''''Microsoft.Jet.OLEDB.4.0',
'Data Source=\\sgstore\Shared\operations\DM\Annual_Mobility_Update\''' 
+ @XLFileSource + ';Extended Properties=Excel 8.0'')...[Sheet1$]'

但我似乎陷入了引用地狱,无法编译。

我应该怎么做才能解决这个问题?

如果有任何提示、钓鱼竿,甚至整条鱼等,我将不胜感激

谢谢 菲利普

【问题讨论】:

  • 不,抱歉,我的意思是我无法在我的 SQL 查询字符串中获得正确的引号数量

标签: excel quotes dynamic-sql


【解决方案1】:

这里是固定代码。希望对您有所帮助

SELECT @sQry='SELECT * INTO MobilityData FROM OPENDATASOURCE(''''Microsoft.Jet.OLEDB.4.0'',''Data Source=\\sgstore\Shared\operations\DM\Annual_Mobility_Update\''' 
+ @XLFileSource + ';Extended Properties=Excel 8.0'')...[Sheet1$]'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-15
    • 1970-01-01
    • 2023-03-18
    • 2012-10-27
    • 2016-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多