1、头部。 头部定义了存储过程的名称、输入、输出参数以及其他一些各种各样的处理选项
2、主体。 主体包含了一个或多个运行时要执行的T-SQL语句。
简化语法如下:
2 [ { @parameter data_type }
3 [ VARYING ] [ = default ] [ OUTPUT ]
4 ] [ , n ]
5
6 [ WITH
7 { RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ]
8
9 [ FOR REPLICATION ]
10
11 AS sql_statement [ n ]
存储过程源代码存储在master数据库中的syscomments表中,本身在sysobjects表中进行注册。
在sysobjects表中,id列为各种数据库对象的唯一标识,Name字段表示对象的名字,xtype表示对象的类型,例如自定义存储过程的类型为"P".可以有以下几种方法来确定数据库中是否已经存在特定的对象名称。
2 if (( select count ( * ) from sysobjects where name = ' ProcName ' ) > 0 )
可以用以下方法查看未经加密的存储过程的代码:
2
3 select * from syscomments where id = object_id ( ' ProcName ' )
列出当前数据库中的所有存储过程:
可以使用系统存储过程来重命名存储过程:
2 -- -------------------------------------------
3 注意: 更改对象名的任一部分都可能破坏脚本和存储过程。
4 object 已重命名为 ' getMoreDataSet ' 。
5
列出存储过程的相关对象:
一般情况下会产生一个或两个结果集一个该过程所依附的对象,一个是依附于该过程的对象
更改存储过程:
可以使用alter procedure ProcName来修改存储过程,这个语句的语法和Create Procedure 的语法完全一样。使用这个语句的主要原因是可以避免对权限和相关数据库对象产生不必要的影响。因为Alter Procedure语句会保留原始存储过程的所有信息。sysobjects中的过程对象标识号(ID列)仍保持一致,存储过程的所有引用都保持原封不动。因此,使用Alter Procedure语句要比删除和重新创建该过程要更好一点。
删除存储过程:
存储过程的类型:
1、用户定义
2、系统
3、扩展
4、临时
5、全局临时
6、远程
还有几个数据库对象如:触发器、视图、用户定义函数它们本质上非常的相似。
存储过程的作用与优点:
1、数据完整性实施
存储过程是帮助你标准化并控制数据项,以实现信息验证甚至是最复杂约束的理想工具。
2、复杂业务规则和约束的一致性实现
T-SQL存储过程功能足够强大,因为他们可以同时合并过程语句和面向集合的语句。任何太复杂以至于其他约束难以实现的问题以及纯粹是过程而不只是面向集合的问题,都可以用存储过程的形式实现。
3、模块化设计
存储过程允许开发人员封装业务功能性,并给调用者提供一个简单的接口。
4、可维护性
通过存储过程可以隐藏数据库结构的细节,无论何时更改数据库结构,数据库管理员都可以减少或有希望消除更改系统中所有其他组件的需要。
5、减少网络流量
6、加快执行速度
存储过程以编译的形式放在数据库服务器的高速缓存中,当需要使用它们时,服务器不需要重新对他们解析和编译。
7、安全实施
防止用户直接对表进行访问,并强制他们使用存储过程执行特定的功能。按照功能性管理存储过程集合要比管理表级或列级权限要容易的多。