由于工作原因最近一直在看存储过程,之前只是对存储过程有个大体的了解,发现还有很多知识点需要学习,今天写下最近几天的总结,以备后患,好记忆不如烂笔头。
CREATE PROC PROC_NAME [].[] |
创建存储过程,名称为PROC_NAME,或者以方括号的形式命名、展现
/***************************************************/ |
注解,一般为存储过程的注解,例如如下:
/***************************************************/ --DECRIPT 外购入库单明细表保存(源单:采购检验申请单) --PARAM 标识 --CREATE DATE 2010-11-16 --CREATE AUTHOR 神舟龙 --GROUP U-Shop /***************************************************/ |
@id int --编号id |
这里声明的是参数,一般用于接收从界面传送的值,也可定义为输入、输出参数,如下:
@id int output --编号id 输出参数 |
@id int input --编号id 输入参数 |
如果同时声明多个参数用逗号隔开,如:
在声明多个参数是用括号括起来更加易懂,易于分辨
@finterid int,--单据内码 @fentryid int,--单据分录号 @fitemid int,--物料内码 |
使存储过程处于隐藏和不可编辑状态,就是网上所谓的“加密”
用declare声明变量,声明变量类型,这里的变量和上面所说的参数不同,很多人都把它们混为一谈,其实是错误的,异同:参数一般是从cs文件或者用户输入的值,即在调用存储过程时,输入或者输出的参数,而变量是在存储过程内部声明的,就像局部变量一样,在一个存储过程中声明了之后,同样可以在其他存储过程声明,注意变量和参数的声明方式不一样,参数直接声明不用关键字declare,而变量需要用declare声明,如果同时声明多个变量,方法和参数一样,用逗号(,)隔开就可以,一般不用括号。
WITH ENCRYPTION |
设置参数或者字符都是用第一种方式,第二种也可以,一般不推荐,也可以为变量设置表达式,如下:
DECLARE @execsql nVARCHAR(100) |
|
|
这里的set 意思同样也是设置,XACT_ABORT on 是事务回滚设置为全部回滚,当在执行事务时,如果出现错误则终止执行,回滚到语句“set XACT_ABORT on ”之前,如果“set XACT_ABORT off ”则指回滚出现错误的地方,但是不会终止执行,代码会继续往下执行,有利于保持代码的健康度和健壮性
本文转自shenzhoulong 51CTO博客,原文链接:http://blog.51cto.com/shenzhoulong/441264,如需转载请自行联系原作者