语法规范

来源:互联网 发布:淘宝客推广效果好吗 编辑:程序博客网 时间:2024/05/11 21:49

【规则-1】:存储过程的Inout参数应按类别分开书写,不要交叉。

例:

       create or replace procedure sp_create_scp(

                  i_gsm_user_id     number,             --用户号码

                  i_order_code      number,                  --命令代码

                  i_operation_type  number,                --工单类型

                  i_operating_srl   number,                  --操作流水

                  o_operation_srl   out number,          --工单流水(返回参数)

                  o_flag            out number     ,         --成功 0 ,失败 1

                  o_msg           out varchar2

                  )

begin

… …

end;

【规则-2】:存储过程中变量的声明应集中在isbegin关键字之间申明

例:

create or replace procedure sp_create_scp(

                                          … …

)

is

… …

   v_user gsm_user%rowtype;   --用户信息

   v_value     varchar2(30);

   nCnt        number(5):=0;

   nPriority   number(2):=0;

begin

… …

end;

【规则-3】:尽可能使用相关表字段类型来定义相关的变量,如%type%rowtype

说明:一般变量,都可能会用于表的查询条件,或增加记录的值;当字段数据类型发生变更时,对应的变量无需修改。

例:

v_user gsm_user%rowtype;   --用户信息

select * from gsm_user where gsm_user_id = v_user;

当gsm_usre_id的类型变成字符型时,该段代码无需修改。

【规则-4】:确保所有的变量和参数都用到,没有用到的变量和参数要删除。

【规则-5】:存储过程有多个分支返回时,若有事务控制,需确保各个分支都结束事务。

异常时,应该在Exception中捕捉异常,并进行事务处理。

【规则-6】:存储过程:不要在异常部分,进行正常的业务处理。

说明:从程序的易读性、易维护性考虑,不要在异常处理部分,包含正常的业务处理部分。

例:(不好的写法)

exception

When no_data_found then

--没有找到记录,则重新查找其他数据

Select * from

….

End;

【规则-7】:原则上不要使用动态 sql,如果必须使用,需绑定变量,

绑定变量写法:

QUERY_STRING :='select pr_template from bssp.bssp_process_template where process_id=:ora_process_id for update';

… …

EXECUTE IMMEDIATE QUERY_STRING INTO LOB USING 38880003;

【规则-8】:代码中的异常捕获返回结果,要加上Oracle的异常sqlerrmOracle的一个session级的全局变量)。

例:

exception
    when others then

rollback;
        oResult :=1;
        oMsg := 'others'||substr(sqlerrm,200);
end;

【规则-10】:捕捉到异常后需要rollback回滚事务。

例:

exception
    when others then

rollback;
        oResult :=1;
        oMsg := 'others'||sqlerrm;
end;

原创粉丝点击