运行一段SQL语句并返回值

我们经常要拼SQL语句,往往又想将拼成的SQL语句返回值到语句外面用。这时候,就需要用到SQL Server中自带的SP_EXECUTESQL了:

-- -If Over Bill Case----------------------------------------------------------------------------------------------------------
declare   @strInVoicetable   nvarchar ( 1000 ), @strOrdertable   nvarchar ( 1000 ), @Inv_NO   nvarchar ( 1000 )
set   @Inv_NO   =   ' 9010002999 '
set   @strInVoicetable   =   ' fi_invoice_detail_2008 '
set   @strOrdertable   =   ' order_detail_2008 '

DECLARE   @OverSql   NVARCHAR ( 4000 ), @OverParameter   NVARCHAR ( 1000 )
declare   @IsOverBill   int
Select   @OverSql   =   '
select @iIsOverBill =
case when (Convert(numeric(19,2),det.Med_Cost * fim.inv_exch) > Convert(numeric(19,2),(odet.UnitCost + odet.ProductionCost))) 
            or (Convert(numeric(19,2),det.AC1 * fim.inv_exch) > Convert(numeric(19,2),odet.AC1Amount))
        then 1 
    else 
        case when @iIsOverBill = 1 then 1 else 0 end
end
from fi_invoice_master fim 
left join 
'   +   @strInVoicetable   +   '  det on fim.invoice_master_id = det.invoice_master_id   
left join order_master ma on det.OrderNo=ma.OrderNo and det.OrderVersion=ma.OrderVersion   
left join 
'   +   @strOrdertable   +   '  odet on det.spotcode=odet.spotcode and det.order_detail_id = odet.order_detail_id
where fim.inv_no in(
'   +   @Inv_NO   +   ' )
' ,
@OverParameter   =  N ' @iIsOverBill int OUTPUT '  
EXEC  SP_EXECUTESQL  @OverSql , @OverParameter , @IsOverBill  OUTPUT 

select   @IsOverBill
-- ----------------------------------------------------------------------------------------------------------------------------

我是数据库笨笨。

转载于:https://www.cnblogs.com/KenBlove/archive/2008/07/08/1238077.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值