declare @sql varchar(8000)
set @sql = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.................'
EXEC SP_EXECUTESQL @sql,N'@total INT OUT',@total OUT如果超过@sql 超过8000 用下面写法,仍然不行,不能用 + 号,怎么办?
EXEC SP_EXECUTESQL @SQL1 + @SQL2 + SQL3, N'@total INT OUT',@total OUT  --  错误
事先说明一下,必须得用 SP_EXECUTESQL ,不能用EXEC(@SQL),因为sql语句中有一个输出参数,要返回一个求和值.

解决方案 »

  1.   

    SQL2005 varchar(MAX)
    SQL2000 Ntext ,Text
      

  2.   

    由于sp_executesql受限制,没什么好办法,如果仅为了得到一个求和值,可以选创建只有一个字段的临时表,然后执行exec把这个结果insert到临时表中,再取出来
      

  3.   

    如果设为max仍不能解决,
    则可以考虑综合使用其他方法,
    比如用临时表存储一些中间结果,
    或者用游标(不推荐)等等。