存储过程概述:
什么是存储过程?
是一组为了完成特定功能的SQL语句集。经过编译存储在数据库中。 存储过程包括程序流,逻辑以及对数据库的查询。可以接受参数,输出参数,返回单个或多个结果集以及返回值
为什么使用存储过程?
存储过程种类:
- 用户自定义存储过程
- 系统存储过程
- 扩展存储过程
创建存储过程:
语法格式:
Create proc[edure]procedure_name[;number]
[{@parameter data_type}
[VARYING][=DEFAULT][OUTPUT][,…N]
[WITH
{RECOMPILE(不缓存执行计划)|ENCRYPTION(对文档进行加密)|RECOMPILE,ENCRYPTION}]
AS
Sql_statement[…n]
]
存储过程示例:
实现过程复杂的工程
修改存储示例:右键--修改命令(会有格式)
ALTER PROCEFUCE procedure_name[;number](修改存储过程名称)
[{@parameter data_type}
[VARYING][=default][output](参数列表)
[,…n]
[WITH
{RECOMPILE | ENCRYPTION |RECIMPILE,ENCRYPTION}](属性)
[FOR REPLICATION]
AS
Sql_atatement[,…n]
删除存储过程:
两种方式:
- T-SQL
语法格式:DROP PROCEDURE{procedure}[,…n]
- 命令菜单手动
点击存储过程-删除命令弹出删除对象窗口-删除
设计存储过程的规则:
1.可以引用在同一存储过程中创建的对象,只要引用时创建即可
2.在存储过程中引用临时表,在存储过程创建临时表,只为改存储过程存在,退出了存储过程,则临时表消失
3.在调用存储过程时,被调用的额存储过程课访问第一个存储过程的对象,包含临时表
4.不能回滚对执行远程MSQLSever2008进行更改的存储过程,不参与事务处理
5.参数最大数目为2100
6.局部变量的最大数目受内存限制
7.存储过最大为128MB
注意事项:
不能包括的T-SQL语句
使用存储过程:
Exec sp_who sa
Exec sp_helpdb +数据库 如果不加就会加载出所有的
Exec sp_monitor 会显示统计信息
临时存储过程:
和创建临时表一样
#本地临时
##全局临时
嵌套存储过程:(最多嵌套32层)
Create proc get_classinfo
As
Select * from 班级信息
Exec get_student '男'
查看存储过程:
Exec sp_helptext + 名称