(模板)存储过程模版以及命名规范

2015-09-05 21:03:49  访问(2654) 赞(0) 踩(0)

/* -----------------------

procedure, function 命名规则

proc_模块名_具体操作 
func_模块名_具体操作 

例如问卷模块,则:
proc_questionnaire_add    问卷插入操作
proc_questionnaire_upd    问卷更新操作
proc_questionnaire_del    问卷删除操作

参数命名方面,
只为输入的参数前缀为:i_para
只为输出的参数前缀为:o_para
同为输入,输出前缀为:io_para

其中 o_ErrCode 和 o_ErrMsg 为错误标志参数,其中 o_ErrCode 为0时表示成功,非0为出错,具体数值可自定;
而o_ErrCode为返回出错信息。关键字大写

函数内部变量名定义可参照之前C#的命名规则

-----------*/

-------------例子:
/* -------------------------------------------------
补充说明:
命名规则:proc_ + 存储过程名 + _操作方法
如:proc_vnet_movie_type_add

add:代表新增(如果存储过程名太长,用a代替。如:proc_vnet_movie_type_a)
upd:代表修改(如果存储过程名太长,用u代替。如:proc_vnet_movie_type_u)
del:代表删除(如果存储过程名太长,用d代替。如:proc_vnet_movie_type_d)

存储过程的注释放在 CREATE OR REPLACE PROCEDURE 后面,方便查看。
否则,如果注释放在 CREATE OR REPLACE PROCEDURE 前面,view proc_vnet_movie_type_add 的时候,不能看到相关注释。

存储过程的关键字全大写,数据表相关全小写,其它的(如传入参数,自定义变量,用匈牙利表示法)

存储过程的事务处理:
建议在存储过程里面不使用事务,在页面程序外部统一控制。
避免出现
执行存储过程A
socket请求
执行存储过程B

在socket请求失败的时候,存储过程A的操作不能回滚。
--------------------------------------------------*/

CREATE OR REPLACE PROCEDURE proc_vnet_movie_type_add
(
  i_Name      IN  VARCHAR2, --角色名
  i_ParentID  IN  INT, --父亲ID
  
  o_ErrCode OUT NUMBER, --出错代码
  o_ErrMsg  OUT VARCHAR2 --出错描述信息
)
/*-----------
描述:新增电影
所用数据表:
           TB_VNET_MOVIE_TYPE
           TB_VNET_MOVIE
备注:

作者:xxxxx
创建日期:xxxx-xx-xx

修改日志:
作者:xxxxxxx
修改日期:xxxx-xx-xx
修改内容:xxxxxxxxxxxxxx

作者:xxxxxxx
修改日期:xxxx-xx-xx
修改内容:xxxxxxxxxxxxxx
----------------*/
IS
  v_Temp NUMBER;
  
  v_ModuleName VARCHAR2(50); --本模块的名称,写日志、显示信息用
  v_ErrCode NUMBER; --系统自带的出错代码
  v_ErrMsg VARCHAR2(2000); --出错描述,编程者自行定义,但不可以为空
  
BEGIN
  v_ModuleName := 'proc_vnet_movie_type_add';

   -- 初始化,要把OUTPUT的值初始化 --
   o_ErrCode  := 0;
   o_ErrMsg  := '';

  --判断是否有重名
  SELECT COUNT(1) INTO v_Temp FROM tb_vnet_movie_type WHERE name = i_Name;
  
  IF (v_Temp > 0) THEN
    o_ErrCode := -1;
    o_ErrMsg := '角色重名';
  END IF;
  
  --插入记录
  INSERT INTO tb_vnet_movie_type
  (
    id,
    name,
    parentid
  )
  VALUES
  (
    seq_vnet_movie_type.NEXTVAL,
    i_Name,
    i_ParentID
  );
  --COMMIT;

EXCEPTION 
  WHEN OTHERS THEN --出现无法识别的错误 
    o_ErrCode := SQLCODE; 
    v_ErrMsg := SQLERRM || ' inputpara is:i_Name:' || i_Name || ' i_ParentID:' || i_ParentID;
    o_ErrMsg := SQLERRM;
    
    /*------如果存在错误日志表,则进行以下操作
    --放入系统错误日志表
    INSERT INTO tb_ba_errlogs
    (
      err_module,
      err_code,
      err_msg
    )
    VALUES
    (
      v_ModuleName,
      o_ErrCode,
      v_ErrMsg
    );
    COMMIT;
    ---------*/
END;
/
show err;


标签:(模板)存储过程模版以及命名规范 

上一条:

下一条:


 

相关评论

评论加载中……
 

发表评论

类型:
内容:
  (Alt+Enter)
 
  ┈全部┈  
 
(显示默认分类)