SQL SERVER存储过程

 
 
 
 
SQL SERVER 存储过程
编写规范
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1          创建存储过程的语法
use <database name>
go
 
if exist …      
drop PROCEDURE <usename>.<procedure_name>
go
 
set
set
CREATE PROCEDURE <usename>.<procedure_name>
[[(]@parameter_name datatype [OUTPUT]
[,@parameter_name datatype [OUTPUT]]..[]]
AS
Begin
SQL_statements
 End
Go
Set
Set
 
 
2          存储过程命名约定
存储过程的命名必须符合 P_调用分类_功能分类_详细名称格式,其中 P表示是存储过程,详细名称是与存储过程意义相关联的汉语拼音首字母,
按调用者分类:
公用类—— GY
内部用—— NB
按功能分类:
               查询类:      CX
               数据维护类: WH
               业务处理类: YW
例: P_NB_YW_GFQS
 
 
3          变量名
参数命名约定: @a+变量类型+’_’+名称,变量类型和名称用小写。
 
变量类型
前缀
Integer
@ai_
Smallinteger
@asi_
Tinyint
@ati_
Varchar
@avc_
Char
@ac_
Numeric
@an_
Datetime
@adt
Smalldatetime
@asdt
 
内部变量命名约定: @+变量类型+’_’+名称,变量类型和名称用小写。
 
变量类型
前缀
Integer
@i_
Smallinteger
@si_
Tinyint
@ti_
Varchar
@vc_
Char
@c_
Numeric
@n_
Datetime
@dt
Smalldatetime
@sdt
 
4          内部调用光标名
 Cur_+名称,名称用小写,第一个字母大写。
用全局变量 @@sqlstatus来判断光标执行是否成功。
@@sqlstatus返回值: 0为成功,1表示失败,2表示未取到数据。
 
 内部创建临时表命名规范: #tmp_+功能代码+’_”+名称
    如: #tmp_pay_owe
 
5          返回值约定
建议:返回值用字符串,出错时错误信息直接由该串返回,成功时返回空串
同时编写通用错误处理过程(见11章)。
 
’0’ 为成功,’<0’ 为失败,’1’----‘99’为其它类型返回值。
 用 RETURN返回值,例如 :
RETURN 0
 
6          备注
    过程前有文字说明,说明本过程是做什么的;调用者是谁;返回值的含义;参数的含义;输入数据库;输出数据库;每一步操作前有文字说明,说明该操作达到的目的。
格式为 :
/******************************************************************概要说明:
    中文名称:
    用     途:
    数 据 库:
语法信息:
    输入参数:                                                                                
    输出参数:                                                                          
    调用举例 :   
外部联系:                                                     
    上级调用:                                                 
    下级调用:                                                   
    输 入 表:                                                   
    输 出 表:                                                        
功能修订:
    简要说明:                                                      
    修订记录:
         <修订日期 > <修订人>   :       修改内容简要说明        
                               〈续简要说明 >               
<修订日期 > <修订人>   :       修改内容简要说明             
                               〈续简要说明 >      
******************************************************************/
7          每一个存储过程均需按模板填写详细的设计文档
见附件。
8          语句格式
循环语句顶头,循环里的语句缩进两个空格。
例如:
WHILE 条件
BEGIN
 …
 …
END
8.1      在一个过程的起始处用DECLARE语句将所有变量一起加以定义,并按变量类型顺序加以定义。
8.2      最大限度为80个字符宽。
8.3      对函数和关键词用大写,其它场合用小写。
8.4      SQL语句特别是INERTDELETEUPDATE语句成功与否的判断,用全局变量@@error@@rowcount来判断。
@@error返回值: 0为成功。
@@rowcount返回值: 0为没有记录被改动。由于@@rowcount的值受每个执行命令的影响,因此应在SQL语句后立即判断@@rowcount的值,或声名一个局部变量来保存@@rowcount的值。
8.5      SELECTINSERT语句选择出多字段时,不要一个字段占一行,而采用以下形式
SELECT @c_dev_no = Dev_no, @n_pay_no = Pay_no, @c_usr_name = Usr_name
 FROM Tel_bas_infot
 WHERE Usr_no = @c_usr_no
8.6      采用规范的缩进文本格式书写
一般设置: TAB = 4, 并将TAB自动转换为空格;
若有多个Begin…End语句嵌套时采用如下方式
BEGIN /*1*/
BEGIN /*1.1*/
BEGIN /*1.1.1*/
END /*1.1.1*/
 
BEGIN /*1.1.2*/
END /*1.1.2*/
 
END /*1.1*/
END /*1*/
其中 1表示第一级嵌套,1.1表示第二级嵌套,1.1.1表示第三级嵌套,1.1.2表示第三级的第二个嵌套… ,一般不要超过三级嵌套。
9         使用存储过程的注意事项
9.1      当存储过程的某一部分出错时,均用ROLLBACK TRANSACTION 对整个事务(如果采用事务处理的话)进行回退。(只能运行一次过程的要采用事务)
9.2      存储过程中的注释
单行要用--
大段注释用 /* 注释内容 */ 的形式。
9.3      一个存储过程可以调用其他存储过程,这种嵌套调用的层数限于16,当前嵌套层数的值保存在全局变量@@nestlevel中。
9.4      可以在自己的SQL Server上执行另一个SQL Server上的存储过程,这时另一个SQL Server 的名字应作为过程名的前缀。
    但是远程过程的调用并非看作事务的一部分。所以当在一个事务进行远程的调用后,远程过程在远程服务器上的修改不能滚回。
9.5      当创建过程和执行过程的语句均包括带参数名的OUTPUT选择时,过程将给调用者返回一个值。
9.6      CREATE PROCEDURE 语句本身可包含在任意数目和类型的SQL语句,但USE和下面的CREATE 语句除外
CREATE VIEW , CREATE DEFAULT ,CREATE RULE ,
CREATE TRIGGER , CREATE PROCEDURE
9.7      如果执行一个调用其它过程的过程,被调用的过程可以存取第一个过程所生成的目标,如临时表。
9.8      如果在过程内生成临时表(#),该临时表仅为该过程而存在;退出该过程时,该临时表自动消失。
    为规范起见,要求退出前将其drop
9.9      可以用sp_rename objname,newname将存储过程改名。
    对其它被过程引用的对象的更名在重编译后会出问题,必须引起注意。可用 sp_help,sp_helptext及sp_depends查看关于某过程的情况。建议不要用sp_rename,而采用先drop 后create 的方法。
 
10      附件
存储过程详细设计

存储过程详细设计
 
名称
 
概要说明
中文名称:
    用     途: 
数 据 库:
 
语法信息
输入参数:
    输出参数:    
    调用举例 :  
 
外部联系
上级调用:                                                 
    下级调用:                                                   
    输 入 表:                                                   
输 出 表:
 
功能修订
简要说明:                                                      
修订记录:     
 
处理流程:
 
  1     错误处理
内部错误处理应采用通用错误处理过程,所有错误信息统一编号备查,便于维护
错误代码
错误说明
备注
 
 
 
 
 
 
 
 
 
 
 
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值