从逻辑上讲,存储过程由两部分组成:
1、头部。 头部定义了存储过程的名称、输入、输出参数以及其他一些各种各样的处理选项
2、主体。 主体包含了一个或多个运行时要执行的T-SQL语句。
简化语法如下:
CREATE PROC [ EDURE ] procedure_name [ ; number ]
[ { @parameter data_type }
[ VARYING ] [ = default ] [ OUTPUT ]
] [ ,n ]
[ WITH
{ RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ]
[ FOR REPLICATION ]
AS sql_statement [ n ]
存储过程源代码存储在master数据库中的syscomments表中,本身在sysobjects表中进行注册。
在sysobjects表中,id列为各种数据库对象的唯一标识,Name字段表示对象的名字,xtype表示对象的类型,例如自定义存储过程的类型为"P".可以有以下几种方法来确定数据库中是否已经存在特定的对象名称。
if object_id('ProcName') is not null-- exist(object_id('ProcName'))
if((select count(*) from sysobjects where name='ProcName')>0)
可以用以下方法查看未经加密的存储过程的代码:
sp_helptext 'ProcName'
select * from syscomments where id=object_id('ProcName')
列出当前数据库中的所有存储过程:
sp_stored_procedures
可以使用系统存储过程来重命名存储过程:
sp_rename @oldName,@newName,@objType
但是重命名存储过程会带来一系列与之相关的问题,有时候删除重建也许是更好的选择,命令执行后SQL SERVER 提示:
sp_rename 'haha','getMoreDataSet',object
---------------------------------------------
注意: 更改对象名的任一部分都可能破坏脚本和存储过程。
object 已重命名为 'getMoreDataSet'。
列出存储过程的相关对象:
一般情况下会产生一个或两个结果集一个该过程所依附的对象,一个是依附于该过程的对象
sp_depends 'ProcName'
更改存储过程:
可以使用alter procedure ProcName来修改存储过程,这个语句的语法和Create Procedure 的语法完全一样。使用这个语句的主要原因是可以避免对权限和相关数据库对象产生不必要的影响。因为Alter Procedure语句会保留原始存储过程的所有信息。sysobjects中的过程对象标识号(ID列)仍保持一致,存储过程的所有引用都保持原封不动。因此,使用Alter Procedure语句要比删除和重新创建该过程要更好一点。
删除存储过程:
drop procedure getMoreDataSet
存储过程的类型:
1、用户定义
2、系统
3、扩展
4、临时
5、全局临时
6、远程
还有几个数据库对象如:触发器、视图、用户定义函数它们本质上非常的相似。
存储过程的作用与优点:
1、数据完整性实施
存储过程是帮助你标准化并控制数据项,以实现信息验证甚至是最复杂约束的理想工具。
2、复杂业务规则和约束的一致性实现
T-SQL存储过程功能足够强大,因为他们可以同时合并过程语句和面向集合的语句。任何太复杂以至于其他约束难以实现的问题以及纯粹是过程而不只是面向集合的问题,都可以用存储过程的形式实现。
3、模块化设计
存储过程允许开发人员封装业务功能性,并给调用者提供一个简单的接口。
4、可维护性
通过存储过程可以隐藏数据库结构的细节,无论何时更改数据库结构,数据库管理员都可以减少或有希望消除更改系统中所有其他组件的需要。
5、减少网络流量
6、加快执行速度
存储过程以编译的形式放在数据库服务器的高速缓存中,当需要使用它们时,服务器不需要重新对他们解析和编译。
7、安全实施
防止用户直接对表进行访问,并强制他们使用存储过程执行特定的功能。按照功能性管理存储过程集合要比管理表级或列级权限要容易的多。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/shaoboyy/archive/2008/11/12/3281564.aspx
分享到:
相关推荐
SqlServer存储过程的导出导入 近日在研究SQL的存储过程,这里我陆续将我在使用存储过程中碰到的问题及解决办法发布到网上,请各位大虾指正。 SqlServer存储过程的导出导入,网上相关资料特别少,经过摸索,这里写...
SQLserver存储过程异常处理
主要介绍了SQLServer存储过程中事务的使用方法,简短的代码带大家更好的学习使用SQLServer存储过程中事务,感兴趣的小伙伴们可以参考一下
sql Server 通用分页存储过程 sql Server 通用分页存储过程 sql Server 通用分页存储过程 sql Server 通用分页存储过程
文档记录了SQL Server在存储运用时的语法,需要有一定的SQL语言学习基本,本文档只是做了梳理与总结,以便查看和识记。
详细介绍了SqlServer的存储过程调试方法,适合初学者及想深入研究的开发人员
执行Sqlserver存储过程返回DataSet
SQL Server提供了一种方法,它可以将一些固定的操作集中起来由SQL Server数据库服务器来完成,以实现某个任务,这种方法就是存储过程。 存储过程是SQL语句和可选控制流语句的预编译集合,存储在数据库中,可由应用...
可以将SQL Server存储过程转为oracle存储过程的工具
第3章 存储过程的设计概念 第4章 T-SQL的基本编程结构 第5章 函数 第6章 复合T-SQL结构:批处理、脚本和事务 第7章 调试和错误处理 第8章 特殊类型的过程 第9章 高级存储过程编程 第10章 与SQL Server环境交互 第11...
资源名称:SQL_Server存储过程调试指南内容简介: 存储过程( Stored Procedure)是一组为了完成特定功能的 SQL 语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来...
自己总结的 关于sqlserver存储过程与多值参数的解决办法。
详细描述SqlServer存储过程,从认识、创建到原理和写法
SQLSERVER 存储过程 语法
SQLSERVER存储过程例子
sqlserver2008 存储过程与储发器 详解 书籍
SQL Server数据库中直接调用Web Service,不需要通过前台调用
SQL存储过程习题,SQL触发器习题,SQL习题,基础语法,与W3School类似,初学者学习使用。
oracle到sqlserver 存储过程语法转换,希望对大家有帮助啊! 最近刚把oracle的数据库移植到sqlserver!
(完整版)SQLServer存储过程的基本概念以及语法汇总.docx