SQL中用函數(shù)代替游標(biāo)的方法
作者:佚名
如果要根據(jù)更新表的某些字段還要進(jìn)行計(jì)算,經(jīng)常會(huì)采用游標(biāo)的方法,下面將為您介紹在SQL中如何使用函數(shù)代替游標(biāo),供您參考。
下面將為您介紹在SQL中如何使用函數(shù)代替游標(biāo),供您參考,希望對(duì)您學(xué)習(xí)SQL中函數(shù)的使用能夠有所幫助。
因?yàn)閡pdate里不能用存儲(chǔ)過(guò)程,然而要根據(jù)更新表的某些字段還要進(jìn)行計(jì)算。我們常常采用游標(biāo)的方法,這里用函數(shù)的方法實(shí)現(xiàn)。
- CREATE FUNCTION [DBO].[FUN_GETTIME] (@TASKPHASEID INT)
- RETURNS FLOAT AS
- BEGIN
- DECLARE @TASKID INT,
- @HOUR FLOAT,
- @PERCENT FLOAT,
- @RETURN FLOAT
- IF @TASKPHASEID IS NULL
- BEGIN
- RETURN(0.0)
- END
- SELECT @TASKIDTASKID=TASKID,@PERCENT=ISNULL(WORKPERCENT,0)/100
- FROM TABLETASKPHASE
- WHERE ID=@TASKPHASEID
- SELECT @HOUR=ISNULL(TASKTIME,0) FROM TABLETASK
- WHERE ID=@TASKID
- SET @RETURN=@HOUR*@PERCENT
- RETURN (@RETURN)
- END
- 調(diào)用函數(shù)的存儲(chǔ)過(guò)程部分
- CREATE PROCEDURE [DBO].[PROC_CALCCA]
- @ROID INT
- AS
- BEGIN
- DECLARE @CA FLOAT
- UPDATE TABLEFMECA
- SET
- Cvalue_M= ISNULL(MODERATE,0)*ISNULL(FMERATE,0)*ISNULL(B.BASFAILURERATE,0)*[DBO].[FUN_GETTIME](C.ID)
- FROM TABLEFMECA ,TABLERELATION B,TABLETASKPHASE C
- WHERE ROID=@ROID AND TASKPHASEID=C.ID AND B.ID=@ROID
- SELECT @CA=SUM(ISNULL(Cvalue_M,0)) FROM TABLEFMECA WHERE ROID=@ROID
- UPDATE TABLERELATION
- SET CRITICALITY=@CA
- WHERE ID=@ROID
- END
- GO
【編輯推薦】
責(zé)任編輯:段燃
來(lái)源:
互聯(lián)網(wǎng)