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

动态SQL语句中输出参数的问题??达人进
DECLARE   @S   VARCHAR(50)
DECLARE   @ind   INT
DECLARE   @cus   INT
Declare   @strTmp   nVarchar(2000)

SELECT   @S=CASE   FSRC   WHEN   6008   THEN   'SALE_PLAN_HTY '   WHEN   6009   THEN   'LET_PLAN_HTY '   END   FROM   CUS_REC_EDIT   WHERE   FID=3  

set   @strTmp=(   'SELECT   @ind=   B.FINDUSTRY,@cus=B.FCUSTOMER   FROM   CUS_REC_EDIT   A   INNER   JOIN  
(SELECT   *   FROM   '+   @S   +   '   )   B   ON   A.FSRC_ID   =B.FID     WHERE   A.FID=3 '   )

  exec   sp_executesql   @strTmp,N '@ind   int   output ',@IND   OUTPUT,N '@cus   int   output ',@CUS     OUTPUT

SELECT   @IND,@CUS
-------------
显示错误

消息   137,级别   15,状态   1,第   1   行
必须声明标量变量   "@cus "。
消息   102,级别   15,状态   1,第   2   行
'B '   附近有语法错误。


我想把那个字段的值输出来。。。。就这个要求。。谢谢

------解决方案--------------------
多了點東西,再修改下。


DECLARE @S VARCHAR(50)
DECLARE @ind INT
DECLARE @cus INT
Declare @strTmp nVarchar(2000)
SELECT @S=CASE FSRC WHEN 6008 THEN 'SALE_PLAN_HTY ' WHEN 6009 THEN 'LET_PLAN_HTY ' END FROM CUS_REC_EDIT WHERE FID=3

set @strTmp=( 'SELECT @ind= B.FINDUSTRY,@cus=B.FCUSTOMER FROM CUS_REC_EDIT A INNER JOIN
(SELECT * FROM '+ @S + ' ) B ON A.FSRC_ID =B.FID WHERE A.FID=3 ' )
exec sp_executesql @strTmp,N '@ind int output, @cus int output ',@IND OUTPUT,@CUS OUTPUT

SELECT @IND,@CUS