日期:2014-05-18  浏览次数:20472 次

SQL 语句,帮忙看一下~!~!~!~!~!~!~!~!~!
DECLARE   @iFeeType   NVARCHAR(100)
DECLARE   @sqlWhere   NVARCHAR(100)
SET   @sqlWhere   =   'AND   2=2 '

SET   @iFeeType   =   (SELECT   SUM(iMoney)   FROM   tSrvDetail   WHERE   1=1)
PRINT   @iFeeType


这样是正确的,但是我现在想把   @sqlWhere   条件也加在后面
SET   @iFeeType   =   (SELECT   SUM(iMoney)   FROM   tSrvDetail   WHERE   1=1   +   @sqlWhere)
请如如何加啊,我要将条件输出的输给   @iFeeType   变量

------解决方案--------------------
exec
------解决方案--------------------
DECLARE @iFeeType NVARCHAR(100)
DECLARE @sqlWhere NVARCHAR(100)
SET @sqlWhere = 'AND 2=2 '

exec( 'SELECT '+@iFeeType+ 'SUM(iMoney) FROM tSrvDetail WHERE 1=1 '+@sqlWhere)
PRINT @iFeeType

--是这个意思么?
------解决方案--------------------
DECLARE @iFeeType NVARCHAR(100)
DECLARE @sqlWhere NVARCHAR(100),
@Esql nvarchar(4000)
SET @sqlWhere = 'AND 2=2 '
SET @Esql= 'SELECT SUM(iMoney) FROM tSrvDetail WHERE 1=1 '+@sqlWhere
execute sp_executesql @Esql,N '@iFeeType NVARCHAR(100) out ',@iFeeType out
PRINT @iFeeType

------解决方案--------------------
楼上正解,
SELECT SUM(iMoney) FROM tSrvDetail WHERE 1=1
是没有参数的,所以能够直接执行
SET @iFeeType = (SELECT SUM(iMoney) FROM tSrvDetail WHERE 1=1 + @sqlWhere)
其中这句 (SELECT SUM(iMoney) FROM tSrvDetail WHERE 1=1 + @sqlWhere)
也带有参数了.
这时就是动态语句了,必须用execute 来执行.
execute有两种执行方式.