huawei--存储过程中定义标签,跳转至标签,控制逻辑
2010-12-01 20:51
411 查看
CREATE OR REPLACE PROCEDURE spVarItemScore
(
v_ServiceType int,
v_ServiceOrder smallint,
v_ScoreResult IN OUT float,
v_Status OUT int
)
AS
v_Dummy number;
null_value EXCEPTION;
SubProc_Error EXCEPTION;
v_SkillGroupField varchar2(30) ;
v_DefaultScoreRatio float ;
v_num smallint:=0;
BEGIN
v_Status :=0;
if Status<>0 THEN
v_ScoreResult := 0 ;
v_Status:= Status;
RAISE SubProc_Error;
end if;
if v_ItemValue IS NULL THEN
goto label_pubcompute;
END IF;
<<label_pubcompute>>
if v_ItemValue = 0 or v_ItemValue = null THEN
v_ScoreResult := v_DefaultScoreRatio ;
if v_Ratio >0 THEN
v_ScoreResult := v_Ratio * v_DefaultScoreRatio / 100.0;
else
v_ScoreResult := abs(v_Ratio) - abs(v_Ratio) * v_DefaultScoreRatio / 100.0;
END IF;
return ;
END IF;
if v_ComputeType =1 THEN
if v_SumWork > 0 THEN
v_ScoreResult := 1.0 * v_ItemValue / v_SumWork;
else
v_ScoreResult := 0;
END IF;
goto label_Ratio_compute;
else
v_ScoreResult := 0 ;
v_Status :=-131;
return ;
end if;
<<label_Ratio_compute>>
if v_Ratio >0 then
v_ScoreResult := v_Ratio * v_ScoreResult;
else
v_ScoreResult := abs(v_Ratio) - abs(v_Ratio) * v_ScoreResult;
END IF;
COMMIT;
EXCEPTION WHEN null_value THEN
v_ScoreResult := 0 ;
v_Status:=2;
return;
WHEN NO_DATA_FOUND THEN
v_ScoreResult := 0 ;
v_Status:=0;
ROLLBACK;
return;
WHEN SubProc_Error THEN
v_ScoreResult := 0 ;
ROLLBACK;
return;
WHEN OTHERS THEN
v_ScoreResult := 0 ;
v_Status:=1 ;
ROLLBACK ;
return;
END spVarItemScore;
/
(
v_ServiceType int,
v_ServiceOrder smallint,
v_ScoreResult IN OUT float,
v_Status OUT int
)
AS
v_Dummy number;
null_value EXCEPTION;
SubProc_Error EXCEPTION;
v_SkillGroupField varchar2(30) ;
v_DefaultScoreRatio float ;
v_num smallint:=0;
BEGIN
v_Status :=0;
if Status<>0 THEN
v_ScoreResult := 0 ;
v_Status:= Status;
RAISE SubProc_Error;
end if;
if v_ItemValue IS NULL THEN
goto label_pubcompute;
END IF;
<<label_pubcompute>>
if v_ItemValue = 0 or v_ItemValue = null THEN
v_ScoreResult := v_DefaultScoreRatio ;
if v_Ratio >0 THEN
v_ScoreResult := v_Ratio * v_DefaultScoreRatio / 100.0;
else
v_ScoreResult := abs(v_Ratio) - abs(v_Ratio) * v_DefaultScoreRatio / 100.0;
END IF;
return ;
END IF;
if v_ComputeType =1 THEN
if v_SumWork > 0 THEN
v_ScoreResult := 1.0 * v_ItemValue / v_SumWork;
else
v_ScoreResult := 0;
END IF;
goto label_Ratio_compute;
else
v_ScoreResult := 0 ;
v_Status :=-131;
return ;
end if;
<<label_Ratio_compute>>
if v_Ratio >0 then
v_ScoreResult := v_Ratio * v_ScoreResult;
else
v_ScoreResult := abs(v_Ratio) - abs(v_Ratio) * v_ScoreResult;
END IF;
COMMIT;
EXCEPTION WHEN null_value THEN
v_ScoreResult := 0 ;
v_Status:=2;
return;
WHEN NO_DATA_FOUND THEN
v_ScoreResult := 0 ;
v_Status:=0;
ROLLBACK;
return;
WHEN SubProc_Error THEN
v_ScoreResult := 0 ;
ROLLBACK;
return;
WHEN OTHERS THEN
v_ScoreResult := 0 ;
v_Status:=1 ;
ROLLBACK ;
return;
END spVarItemScore;
/
相关文章推荐
- MySql存储过程之逻辑判断和条件控制
- MySql存储过程—5、逻辑判断,条件控制
- MySql存储过程—逻辑判断,条件控制,循环控制
- 使用SQL Server版本控制找回存储过程定义
- 在SAS存储过程使用SMC中定义的逻辑库
- MySql存储过程—5、逻辑判断,条件控制
- 存储过程中常使用的逻辑控制语句
- MySql存储过程—5、逻辑判断,条件控制
- MySql存储过程之逻辑判断和条件控制
- huawei--游标使用,定义跳转标签
- MySql存储过程—逻辑判断,条件控制,循环控制
- mysql存储过程中 declare 和 set 定义变量的区别
- 嵌入式视频监控毕业设计过程中保存的标签。。。嵌入式系统视频信号接收、显示 与存储程序设计与实现
- MYSQL基础(视图、索引、存储过程与函数、流程控制语句)
- Oracle 存储过程 定义 和 优点 与 函数 区别
- 获取数据库中存储过程的定义
- 存储过程--自动生成有日期的序列号(头可自己定义)
- SQLServer 在存储过程里使用事务控制的简单小例子
- a标签跳转到配置有angular路由的页面,并控制显示view中的内容
- 通过存储过程提单时进行数据校验,优先于预算控制