当前位置: 代码迷 >> Sql Server >> 关于sql openquery有关问题
  详细解决方案

关于sql openquery有关问题

热度:96   发布时间:2016-04-24 09:49:36.0
关于sql openquery问题
执行存储过程中报错,发现是远程调用表值函数时有问题,把代码拿出来执行提示这样的错误
DECLARE @month NVARCHAR(100),@sql NVARCHAR(100)
SET @month='1409,1410,1411'
SET @sql='SELECT * FROM [CRMReporting].[dbo].[SplitToTable]('''+@month+''','','')'
 SELECT MAX(CAST(value AS INT)) FROM OPENQUERY([10.237.70.214], @sql)
'+' 附近有语法错误
经过测试@sql里的代码在214服务器上可以使用,且直接把参数参数的值写在sql里面也可以执行,如:
select value from OPENQUERY([10.237.70.214], 'SELECT * FROM [CRMReporting].[dbo].[SplitToTable](''1409,1410,1411'','','')')
但是只有当参数和openquery放一起时就会报错
------解决思路----------------------
DECLARE @month NVARCHAR(100),@sql NVARCHAR(100)
SET @month='1409,1410,1411'
SET @sql='SELECT * FROM [CRMReporting].[dbo].[SplitToTable]('''+@month+''','','')'
SET @SQL=REPLACE(@SQL,'''','''''')
SET @sql='SELECT MAX(CAST(value AS INT)) FROM OPENQUERY([10.237.70.214],'''+@sql+''')'
EXEC(@sql)

应该是这样子