SqlServer之存储过程
存储过程最主要的特色:是当写完一个存储过程后即被翻译成可执行码存储在系统表
内,当作是数据库的对象之一,一般用户只要执行存储过程,并且提供存储过程所需的参
数就可以得到所要的结果而不必再去编辑 T-SQL 命令。
存储过程也可用在控制访问权限、为数据库表中的活动创建审计追踪、将关系到数据
库及其所有相关应用程序的数据定义语句和数据操作语句分隔开。
1.存储过程定义:
存储过程是一种在数据库中存储复杂程序,以便在外部程序调用的一种数据库对象,它可以视为数据库中的一种函数或子程序;
存储过程经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数来执行它。存储过程相比传统SQL语句执行方式(先编译,再执行)明显效率高。为了保证数据的完整性,提高执行重复任务的性能和一致性,常采
用存储过程(Stored Procedure)。
2.存储过程的优点:
.减少了服务器/客户端网络流量
.更强的安全性
.代码的复用性
.更容易维护
3.存储过程的类型:
1、系统存储过程:以“sp_”为前缀标识,存储在“master”数据库中,提供对系统表的检索和管理功能。
2、扩展存储过程:以“xp_”为前缀标识,通过执行外部DLL来实现功能。
3、用户定义存储过程:创建在用户数据库中。
4. 临时存储过程:本地临时过程的名称以单个数字符号 (#) 开头;它们仅对当前的用户连接是可见的;它们仅对当前的用户连接是可见的;
当用户关闭连接时被删除。全局临时过程的名称以两个数字符号 (##)开头,创建后对任何用户都是可见的,并且在使用该过程的最后一个会话结束时被删除。
二.
常用系统存储过程有:
exec sp_databases; --查看数据库
exec sp_tables; --查看表
exec sp_columns student;--查看列
exec sp_helpIndex student;--查看索引
exec sp_helpConstraint student;--约束
exec sp_stored_procedures;
exec sp_helptext 'sp_stored_procedures';--查看存储过程创建、定义语句
exec sp_rename student, stuInfo;--修改表、索引、列的名称
exec sp_renamedb myTempDB, myDB;--更改数据库名称
exec sp_defaultdb 'master', 'myDB';--更改登录名的默认数据库
exec sp_helpdb;--数据库帮助,查询数据库信息
exec sp_helpdb master;
存储过程基本语法:
--------------创建存储过程----------------- CREATE PROC [ EDURE ] procedure_name [ ; number ] [ { @parameter data_type } [ VARYING ] [ = default ] [ OUTPUT ] ] [ ,...n ] [ WITH { RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ] [ FOR REPLICATION ] AS sql_statement [ ...n ] --------------调用存储过程----------------- EXECUTE Procedure_name '' --存储过程如果有参数,后面加参数格式为:@参数名=value,也可直接为参数值value --------------删除存储过程----------------- drop procedure procedure_name --在存储过程中能调用另外一个存储过程,而不能删除另外一个存储过程
1,参数分为输入参数,输出参数;参数都是可选的,输入参数允许默认值。
示例:
一个简单的存储过程:
CREATE PROCEDURE COURSEINFO @Cno varchar(20), @Cname varchar(20) AS BEGIN select * from COURSE where CNO=@Cno and CNAME=@Cname END GO
如果用sql直接查询,是这样的:
select * from COURSE where CNAME='计算机导论'
查询结果:
用存储过程查询,则是这样的:
exec COURSEINFO 计算机导论,计算机导论
或这样:
EXEC COURSEINFO @Cno='3-105',@Cname='计算机导论'
查询结果:
参考资料:
SQL存储过程入门:http://www.cnblogs.com/lideng/archive/2013/04/11/3013966.html
SQL Server存储过程:http://www.cnblogs.com/hoojo/archive/2011/07/19/2110862.html
存储过程与触发器 :http://read.pudn.com/downloads152/ebook/661195/ch09.pdf
在 ADO.NET 中使用存储过程 :http://116.252.173.100:16000/dotnetweb/dotnetjpkchtml/jxnr/asp/10.pdf