数据库系列之T-SQL(存储过程)
什么是存储过程
存储过程是保存在数据库的函数,可以被应用程序或其它存储过程调用。
存储过程有什么用
用于实现业务逻辑(特别是需要事务的业务)。
1 优点
减少网络通信量
执行速度更快
更强的适应性(有时候发布系统无需更新客户端)
分布式工作
减少客户端的负荷
2 缺点
增加服务器的负荷
常用的系统存储过程
系统存储过程 说明
sp_help 用于查看对象信息
sp_helpdb 用于查询数据库的信息
sp_helpconstraint 查看某个表的约束
sp_helpindex 查看某个表的索引
sp_databases 用于显示所有数据库的信息,如数据库名和数据大小。
sp_renamedb 更改数据库的名称
Sp_rename 用于在当前数据库更改用户创建的对象名称,如数据表、字段、索引等
sp_tables 返回当前数据库中数据表和视图
sp_columns 返回某个数据表或视图的列信息
sp_password 添加或修改登录帐户的密码
调用系统存储过程
exec sp_databases --列出当前系统中的所有数据库
use booksmanager
go
exec sp_tables --列出数据库booksmanager中所有数据表和视图
exec sp_columns books --列出图书表的列信息
exec sp_help books --查看图书表的所有信息
exec sp_helpconstraint books --查看图书表的约束
exec sp_helpindex books --查看图书表的索引
扩展存储过程
扩展存储过程(Extended stored procedured)是对动态链接库(DLL)函数的调用。
扩展存储过程通常是以“XP_”为前缀。
用户自定义存储过程
1 不带参数的存储过程
(1)语法
CREATE PROCEDURE 存储过程名
AS
………
………
………
建议:自定义存储过程的名称最好以USP_开头
(2)调用带输入参数的存储过程
EXEC 存储过程名
2 带参数的存储过程
(1)语法
CREATE PROCEDURE 存储过程名
@参数1 数据类型 [=默认值],
……
@参数n 数据类型 [=默认值]
AS
………
………
………
(2)调用带输入参数的存储过程
方式一:
exec usp_score_byparam 'SQL Server基础编程',70
方式二:
exec usp_score_byparam @coursename='SQL Server基础编程' ,@pass=70
3 带输出参数的存储过程
(1)语法
CREATE PROCEDURE 存储过程名
@参数1 数据类型 [=默认值],
……
@参数n 数据类型 OUTPUT
AS
………
………
………
(2)调用带输出参数的存储过程
declare @result int
exec usp_ADD 20,30,@result output
print '运算结果:'+str(@result,5)