- 什么是存储过程?
存储过程是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数。
存储过程分为系统存储过程和自定义存储过程。
常用的系统存储过程有
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';--查看存储过程创建、定义语句 经常用到这句话来查看存储过程,like sp_helptext sp_getLoginInfo.
exec sp_rename student, stuInfo;--修改表、索引、列的名称
exec sp_renamedb myTempDB, myDB;--更改数据库名称
exec sp_defaultdb 'master', 'myDB';--更改登录名的默认数据库
exec sp_helpdb;--数据库帮助,查询数据库信息
exec sp_helpdb master;
- 为什么要使用存储过程?
(1)重复使用。存储过程可以重复使用,从而减轻数据库开发人员的工作量。
(2)提高性能。存储过程在创建的时候就进行了编译,将来使用的时候不用重新编译。一般的SQL语句每执行一次就要编译一次,所以使用存储过程提高了效率。
(3)减少网络流量。存储过程位于服务器,调用的时候只需要传递存储过程名称和参数就可以了,降低了网络传输的数据量。
(4)安全性。参数化的存储过程可以防止SQL注入攻击,并且可以设定只有某些用户才具有对指定存储过程的使用权。 - 基本语法
(1)无参数的存储过程
选出student表中的所有信息。
create proc stuProc
as // 此处as可以省略不写
begin // begin和end是成对出现的,不可以只写其中一个,但是可以都不写
select S# Sname Sage Ssex from student
end
go
(2)有参数的存储过程
选出指定姓名的学生信息
create proc stuProc
@Sname varchar(100)
as
begin
select S# Sname Sage Ssex from student where Sname=@Sname
end
go
exec stuProc '赵雷' // 执行语句
上面是在外部对参数进行赋值,也可以在存储过程内部直接赋值
create proc stuProc
@Sname varchar(100)='赵雷'
as
begin
select S# Sname Sage Ssex from student where Sname=@Sname
end
go
exec stuProc // 执行语句
待续。。。。
参考博客:
https://www.cnblogs.com/babybottle/p/9881587.html
https://www.cnblogs.com/lideng/archive/2013/04/11/3013966.html