解决方案 »

  1.   

    试下这样有错吗
    DECLARE @month NVARCHAR(100),@sql NVARCHAR(100)
    SET @month='1409,1410,1411'
    SET @sql='SELECT * FROM [CRMReporting].[dbo].[SplitToTable]('''+@month+''','','')''+' 附近有语法错误,提示的是+出错,只有前面这部分有+,可以先试下虽然我看了下感觉没有错,你原本的应用上下文是什么样子的呢
      

  2.   

    1)把 nvarchar 换成 varchar
    2)把 @sql 长度扩大成 200
      

  3.   

    原本的sql就是这样的,不过是放在了存储过程里,现在我已经改成了存储过程调用本地函数的方法实现了,不过只是好奇为啥这么写不对,顺便按你说的做,提示@sql附近有语法错误
      

  4.   


    仍提示@sql附近有语法错误
      

  5.   

    就那三行也有错?
    我这边都成功了~
    就那3行是没有问题的,但是我要拿这个动态sql去执行的
    放在如下sql里就会报错
     SELECT MAX(CAST(value AS INT)) FROM OPENQUERY([10.237.70.214], @sql)
      

  6.   

    刚在微软的帮助里看了一片文章,不知道是不是和它说得是一个意思http://support.microsoft.com/kb/291376/zh-cn
    感觉是同一个的话应该我这个已经修复了才对嘛
      

  7.   

    我也研究了下,发现是这个问题你在外面 套一个EXEC 可以解决问题
      

  8.   

    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)
    应该是这样子