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

运行一段SQL语句并返回值---If Over Bill Case----------------------------------------------------------------------------------------------------------
运行一段SQL语句并返回值
declare @strInVoicetable nvarchar(1000),@strOrdertable nvarchar(1000),@Inv_NO nvarchar(1000)
运行一段SQL语句并返回值
set @Inv_NO = '9010002999'
运行一段SQL语句并返回值
set @strInVoicetable = 'fi_invoice_detail_2008'
运行一段SQL语句并返回值
set @strOrdertable = 'order_detail_2008'
运行一段SQL语句并返回值
运行一段SQL语句并返回值
DECLARE @OverSql NVARCHAR(4000),@OverParameter NVARCHAR(1000)
运行一段SQL语句并返回值
declare @IsOverBill int
运行一段SQL语句并返回值
Select @OverSql = '
运行一段SQL语句并返回值select @iIsOverBill =
运行一段SQL语句并返回值case when (Convert(numeric(19,2),det.Med_Cost * fim.inv_exch) > Convert(numeric(19,2),(odet.UnitCost + odet.ProductionCost))) 
运行一段SQL语句并返回值            or (Convert(numeric(19,2),det.AC1 * fim.inv_exch) > Convert(numeric(19,2),odet.AC1Amount))
运行一段SQL语句并返回值        then 1 
运行一段SQL语句并返回值    else 
运行一段SQL语句并返回值        case when @iIsOverBill = 1 then 1 else 0 end
运行一段SQL语句并返回值end
运行一段SQL语句并返回值from fi_invoice_master fim 
运行一段SQL语句并返回值left join 
' + @strInVoicetable + ' det on fim.invoice_master_id = det.invoice_master_id   
运行一段SQL语句并返回值left join order_master ma on det.OrderNo=ma.OrderNo and det.OrderVersion=ma.OrderVersion   
运行一段SQL语句并返回值left join 
' + @strOrdertable + ' odet on det.spotcode=odet.spotcode and det.order_detail_id = odet.order_detail_id
运行一段SQL语句并返回值where fim.inv_no in(
' + @Inv_NO + ')
运行一段SQL语句并返回值
',
运行一段SQL语句并返回值
@OverParameter = N'@iIsOverBill int OUTPUT' 
运行一段SQL语句并返回值
EXEC SP_EXECUTESQL @OverSql,@OverParameter,@IsOverBill OUTPUT 
运行一段SQL语句并返回值
运行一段SQL语句并返回值
select @IsOverBill
运行一段SQL语句并返回值
------------------------------------------------------------------------------------------------------------------------------

我是数据库笨笨。

相关文章: