好多人都说存储过程很难?认真看这篇文章就够了

简介: 好多人都说存储过程很难?认真看这篇文章就够了

何为存储过程?

存储过程是在数据库管理系统中保存的、预先编译的并能实现某种功能的sql程序,说直白点,java知道吧?和java的方法一样。

每遇到一个新的知识点时,我们都会看看它的优点,从而加深对它学习的欲望,存储过程也不例外,那么存储过程有什么优点?

  • 执行速度更快
  • 允许模块化程序设计
  • 提高系统安全性
  • 减少网络流通量

看完优点之后,我们再来看看存储过程的分类有哪些,然后我们按照分类一个一个的写(演示)。

  • 系统存储过程
  •    系统存储过程的名称一般以“sp_”开头
  •    由SQLServer创建、管理和使用
  •    存放在Resource数据库中
  •    类似C#语言类库中的方法
  • 扩展存储过程
  •    扩展存储过程的名称通常以“xp_”开头
  •    使用编辑语言(如C#)创建的外部存储过程
  •    以DLL形式单独存在
  • 用户自定义存储过程
  •    由用户在自己的数据库中创建的存储过程
  •    类似C#语言中用户自定义的方法

系统存储过程

(上面已经解释过了,现在直接动手操作)

下面我们演示一下常用的系统存储过程:

1.列出所有的数据库

exec sp_databases

2.修改数据库的名称:

exec sp_renamedb 'jobs','job'

3.当前数据库的所有表(包括视图、表)

exec sp_tables

4.返回student表的列的信息

exec sp_columns student

5.查看表student的信息

exec sp_help student

6.查看表的约束(默认约束,唯一约束)

exec sp_helpconstraint student

7.查看当前数据库中的存储过程

exec sp_stored_procedures

扩展存储过程

(主要就演示一个xp_cmdshell)

xp_cmdshell

  • 可以执行dos命令下的而一些操作
  • 以文本方式返回任何输出

下面演示一下该扩展存储过程,查看某个文件夹:(D://DB)

/*若xp_cmdshell座位服务器安全配置的一部分而被关闭,需要先启用*/
exec sp_configure 'show advanced options',1   --显示高级配置信息
go 
exec sp_configure 'xp_cmdshell',1    --打开xp_shell选项
go 
reconfigure --重新配置
go 
--查看某个文件夹:(D://DB)
exec xp_cmdshell 'dir D:\DB\'

自定义存储过程

已知有两表,Student学生表和Grade年级表,表中数据如下:(仔细看,这是铺垫)

Student表

Grade表

1.无参的存储过程(查询青鸟一班的所有学生姓名);

创建存储过程:

go
create proc job_GetSname
as 
select sname from student where sgid = (select gid from grade where gname = '青鸟一班')
go

调用存储过程:

exec job_GetSname

运行结果:

2.带参数的存储过程(根据输入的年级名称查询该年级所有的学生信息)

创建存储过程:

go
create proc job_Login
@gname varchar(50)
as
select sname from student where sgid = (select gid from grade where gname = @gname)
go

调用存储过程:

exec job_Login '青鸟一班'

运行结果:

3.带输出参数的存储过程(根据学生姓名返回年级名称)

go
create proc job_GetGName
@sname varchar(50), --输入学生姓名
@gname varchar(50) output    --输出年级名称
as
select @gname = gname from grade where gid = (select sgid from  student where sname = @sname)
go

调用存储过程:

declare @gname varchar(50) --声明一个变了接收年级名称
exec job_GetGName '李太白', @gname output 
print '所在年级是:'+@gname

运行结果:

JavaScript实现四则运算

2020-06-12


相关文章
|
存储 关系型数据库 MySQL
带你学MySQL系列 | “存储过程”学不会,那是你没有看这篇文章!(三)
带你学MySQL系列 | “存储过程”学不会,那是你没有看这篇文章!(三)
带你学MySQL系列 | “存储过程”学不会,那是你没有看这篇文章!(三)
|
存储 关系型数据库 MySQL
带你学MySQL系列 | “存储过程”学不会,那是你没有看这篇文章!(二)
带你学MySQL系列 | “存储过程”学不会,那是你没有看这篇文章!(二)
带你学MySQL系列 | “存储过程”学不会,那是你没有看这篇文章!(二)
|
存储 SQL 关系型数据库
带你学MySQL系列 | “存储过程”学不会,那是你没有看这篇文章!(一)
带你学MySQL系列 | “存储过程”学不会,那是你没有看这篇文章!(一)
带你学MySQL系列 | “存储过程”学不会,那是你没有看这篇文章!(一)
|
3月前
|
存储 SQL 关系型数据库
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】(2)
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】
|
27天前
|
存储 关系型数据库 MySQL
Mysql表结构同步存储过程(适用于模版表)
Mysql表结构同步存储过程(适用于模版表)
31 0
|
1月前
|
存储 SQL 关系型数据库
MySQL 创建存储过程注意项
MySQL 创建存储过程注意项
29 0
|
2月前
|
存储 SQL 关系型数据库
(十四)全解MySQL之各方位事无巨细的剖析存储过程与触发器!
前面的MySQL系列章节中,一直在反复讲述MySQL一些偏理论、底层的知识,很少有涉及到实用技巧的分享,而在本章中则会阐述MySQL一个特别实用的功能,即MySQL的存储过程和触发器。
|
2月前
|
存储 SQL 数据库
MySQL设计规约问题之为什么要避免使用存储过程、触发器和函数
MySQL设计规约问题之为什么要避免使用存储过程、触发器和函数
|
3月前
|
存储 SQL 关系型数据库
MySQL数据库进阶第四篇(视图/存储过程/触发器)
MySQL数据库进阶第四篇(视图/存储过程/触发器)
|
3月前
|
存储 SQL 关系型数据库
MySQL存储过程和存储函数的使用
MySQL的存储过程和存储函数在功能和用法上有明显的区别。存储过程是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,通过指定名称和参数(如果有)来调用执行,可以返回多个值或结果集,但不直接返回值。而存储函数则是一个有返回值的特殊存储过程,它返回一个值或表对象,可以直接嵌入SQL语句中使用,如SELECT语句中。两者都是为了提高SQL代码的重用性和性能,但使用场景和方式有所不同。
188 4