我在 SQL 中有以下代码
DECLARE c CURSOR FOR select MSISDN FROM
OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Database=' + @Path + ';HDR=YES', 'SELECT MSISDN FROM [sheet1$]')
我想连接数据库中的路径,但连接不起作用,知道吗?
我在 SQL 中有以下代码
DECLARE c CURSOR FOR select MSISDN FROM
OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Database=' + @Path + ';HDR=YES', 'SELECT MSISDN FROM [sheet1$]')
我想连接数据库中的路径,但连接不起作用,知道吗?
您不能在其中进行字符串连接OPENROWSET
- 该命令需要字符串文字。我最近有一个项目正在转换一些使用 OPENROWSET 并遇到该问题的旧 SQL。
解决此问题的一种方法是使用 OPENROWSET 将数据转储到表变量中,然后从表变量中声明游标。像这样的东西(未经测试):
DECLARE @data AS TABLE(MSISDN VARCHAR(255))
DECLARE @sql AS VARCHAR(4000)
SET @sql = 'SELECT MSISDN FROM '
SET @sql = @sql + ' OPENROWSET(''Microsoft.ACE.OLEDB.12.0'','
SET @sql = @sql + '''Excel 12.0;Database=' + @Path + ';HDR=YES'','
SET @sql = @sql + '''SELECT MSISDN FROM [sheet1$]'')'
INSERT INTO @data
EXECUTE sp_executesql @sql
DECLARE c CURSOR FOR SELECT MSISDN FROM @data