【规则-1】:所有代码统一使用小写字母书写。
例:
create or replace procedure p_check_package(
i_package_code number,
i_user_id number,
o_flag out number
) is
begin
o_flag := 0;
end p_check_package;
/
【规则-2】:确保变量和参数在类型和长度上与表数据列类型和长度相匹配。
说明:如果与表数据列宽度不匹配,则当较宽或较大的数据传进来时会产生运行异常。
【规则-3】:参数和变量的命名符合如下规范:
1、传入参数以“i_”为前缀;
2、传出参数以“o_”为前缀;
3、变量以“v_”为前缀
4、例如:
create or replace procedure P_GET_GLOBAL(i_operator_id in number,
i_session_id in number,
o_flag out number) is
v_cityID varchar(2);
v_region_level number(1);
begin
….
end;
【规则-4】:程序块中的begin、end独立成行。
【规则-5】:程序块采用缩进风格书写,保证代码清晰易读,风格一致,缩进格数统一。
例:
… …
begin
update CFG_CDR_REFRESH set CHANGE_TIME=sysdate where CFG_TYPE=5;
if sql%rowcount = 0 then
insert into CFG_CDR_REFRESH(CFG_TYPE,CHANGE_TIME,STATE)
values(5,sysdate,0);
end if;
end trg_CFG_CITY_HOST_QRY_ALL;
【规则-6】:不允许把多个语句写在一行中,即一行只写一条语句。
【规则-7】:同一条语句占用多于一行时,每行的第一个关键字应当左对齐,
例:
select * into v_gsm_user from gsm_user
where msisdn = to_number(trim(i_phone_number))
and user_city = i_city_id;
【规则-8】:对于 Insert … values 和 update 语句,一行写一个字段,字段后面紧跟注释(注释语句左对齐),values 和 insert 左对齐,左括号和右括号与 insert、values 左对齐
例:
insert into table_name
(
user_id, --用户 ID,主键
user_name, --用户名
login_name --登录名
)
values
(
v_user_id,
v_user_name,
v_login_name
)
【规则-9】:相对独立的程序块之间需加空行。
例:
--判断套餐是否可增加成员并获得专网标志
begin
select use_date, decode(package_type, 1000, 1, 0)
… …
exception
end;
--如果为手机号码
if i_number_type = 0 then
begin
… …
end;
【规则-10】:超过110列的语句要分行书写,长表达式应在低优先级操作符处换行,操作符或关键字放在新行之首。
例:
v_exchangeable_score := (v_score_phone_score + v_score_bounty_score + v_score_gift_score - v_score_alr_excg_score)
+ (v_pre_score_phone_score + v_pre_score_bounty_score - v_pre_score_alr_excg_score)