何为存储过程?

存储过程是在数据库管理系统中保存的、预先编译的并能实现某种功能的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

sql server高级查询,看这篇文章就够了

2020-06-09

Linux基础知识之【简介与安装】

2020-06-08

老师,我没有学过事务……同学你过来,你看老师手里拿的是什么?

2020-06-11

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

  1. 为什么很多人都认为编程很难学?

    很多进入计算机专业就读的学生,最初至少有一大半对真实的软件开发完全不了解,是"一张白纸". 不幸的是,学了四年之后,许多张"白纸"又变成了许多罐"浆糊 ...

  2. tomcat webapps目录文件都能删吗_详细测试实现Tomcat根域名访问的场景,看这篇文章就够了...

    写在前面的话 首先吐槽一下,我发现国内的博客大多是垃圾,完全没有人测试代码,就在那瞎扯淡,如果你看到别的地方说的跟我的文章说的不一样,请以我这篇为准,因为我每个场景都经过N次测试,确保没有问题! 场景 ...

  3. PAKDD 2019 都有哪些重要看点?看这篇文章就够了!...

    雷锋网 AI 科技评论按:亚太地区知识发现与数据挖掘国际会议(Pacific Asia Knowledge Discovery and Data Mining,PAKDD)是亚太地区数据挖掘领域的顶级 ...

  4. PAKDD 2019 都有哪些重要看点?看这篇文章就够了!

    雷锋网 AI 科技评论按:亚太地区知识发现与数据挖掘国际会议(Pacific Asia Knowledge Discovery and Data Mining,PAKDD)是亚太地区数据挖掘领域的顶级 ...

  5. Android隐藏录屏内容,原来手机内置的录屏功能这么强大,好多人都不会用,很可惜!...

    原标题:原来手机内置的录屏功能这么强大,好多人都不会用,很可惜! 原来手机内置的录屏功能这么强大,好多人不会用,真的很可惜 现在的手机朝着智能化的方向一直在发展,多了许多很实用的功能.就比如手机上自带 ...

  6. 一个清华大学生几天猎头生活的感想---很有感触的一篇文章

    ZZ一个清华大学生几天猎头生活的感想---很有感触的一篇文章 2008-03-23 03:38 从来没有想过自己会加入这一行,从开始自己喜欢的专业通讯,到后来喜欢的管理,幻想过是专业高手,幻想过管理专 ...

  7. 再有人问你volatile是什么,把这篇文章也发给他(深入分析)

    转载自  再有人问你volatile是什么,把这篇文章也发给他 在上一篇文章中,我们围绕volatile关键字做了很多阐述,主要介绍了volatile的用法.原理以及特性.在上一篇文章中,我提到过:v ...

  8. 每个成功的男人背后都有个厉害的女人,这篇文章带你看看互联网大佬们背后的女人。...

    每个成功的男人背后都有个厉害的女人,这篇文章带你看看互联网大佬们背后的女人. 别看这些互联网大佬现在一幅高大上的样子,可是别忘了人家也有屌丝的时候,也有青春少年的时候啊!今天咱们就八卦一下,翻翻这些大 ...

  9. 一直对zookeeper的应用和原理比较迷糊,今天看一篇文章,讲得很通透,分享如下(转)...

    本文转自http://blog.csdn.net/gs80140/article/details/51496925 一直对zookeeper的应用和原理比较迷糊,今天看一篇文章,讲得很通透,分享如下: ...

最新文章

  1. linux 命令安装redis
  2. html5 canvas 画图移动端出现锯齿毛边的解决方法
  3. 005_JSONArray对象静态方法
  4. 爬虫的配置、启动和终止
  5. zabbix_get 命令介绍
  6. 【myeclipse】java.lang.NullPointerException at com.genuitec.eclipse.ast.deploy.core.Deployment
  7. java 根据类名示例化类_如何使用示例从Java中的类路径加载资源
  8. 大龄程序员失业后,看他们是如何破局突围的? | 技术头条
  9. 在Anaconda中安装TensorFlow1.14.0与TensorFlow2.0.0
  10. 按比例设置获奖人数方案
  11. 安卓打开第二个activity就崩溃_零基础安卓开发起步(三)
  12. 监听mysql表内容变化 使用canal_2 监听mysql表内容变化,使用canal
  13. 把python37添加到环境变量配置_linux设置python环境变量 分类: python ...
  14. UILabel小技巧
  15. 必须拉响恶性通胀的警报
  16. 个人打卡签到表html代码,考勤每日签到表模板
  17. uniapp点击图片放大功能
  18. vb.net html元素,vb.net 教程 12-3 HtmlElement类 1
  19. python:实现十六进制转二进制算法(附完整源码)
  20. 系统运维安全管理办法_7.系统运维安全管理规定

热门文章

  1. Abstract Factory(抽象工厂)--对象创建模式
  2. java中的循环结构_Java中的循环结构进阶
  3. lcd刷新慢_LCD1602刷新率很慢的问题
  4. word List 45
  5. PAT-A Sign In and Sign Out
  6. opencv 常见细碎问题解决
  7. 操作系统——缓冲区溢出
  8. P2839 [国家集训队]middle 二分 + 主席树 在值域上建区间
  9. 【SDOI2018】战略游戏【圆方树】【虚树】
  10. HDU - 6558/概率dp(从后往前推导)