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有两种执行方式.