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

何为存储过程?

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


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/324991.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

下一代的 Actor 模型框架 Proto Actor

ProtoAct 是下一代的 Actor 模型框架,提供了 .NET 和 Go 语言的实现,默认支持分布式,提供管理和监控功能。在过去几年,我们经常看到两种 Actor 模型方法相互竞争,首先是经典的 Erlang/Akka 风格的 Actor 模型&#xff…

你知道i=i++;的含义吗?原理其实没有你想的那么简单

i和i我们都知道,但是你知道ii;吗?自上学时,老师就说i是先赋值再加,而i是先加再赋值,比如我们写个代码举下例子:i:/*** 自增案例*/public static void testZiZeng(){int i 1;int a i;System.out.println(&…

学会思考,而不只是编程

中国人常说“授之以鱼不如授之以渔”。如果说教授编程是授之以鱼,那么教授计算机科学就是授之以渔。为什么说学习计算机科学比学会编程要重要得多?来听听Yevgeniy Brikman的解释。 现如今,似乎每个人都在学习编程:Bill Gates、Ma…

ssl1562-局域网

局域网 题目 就是一个图&#xff0c;求最小生成树&#xff0c;然后求被去除的边的价值。 输入 用线来表示联通 5 5 1 2 8 1 3 1 1 5 3 2 4 5 3 4 2 输出 去除的边的总价值 8 解题思路 求出最小生成树的价值然后线的总值减去最小生成树的价值 代码 #include<…

什么?java中居然可以执行js代码了?真是不知者不怪

今天在书上看的&#xff0c;java中可以直接调用js的函数了&#xff0c;言外之意就是java已经支持外部的脚本语言了&#xff08;在运行期解释执行的&#xff09;&#xff0c;查了查&#xff0c;jdk从1.6之后开始支持的&#xff0c;1.6之前不可以。 为什么Java这种编译语言还需要…

用 Docker Machine 创建 Azure 虚拟主机

搭建环境向来是一个重复造轮子的过程&#xff0c;Docker Machine 则把用户搭建 Docker 环境的各种方案汇集在了一起。笔者在《Docker Machine 简介》一文中演示了使用 Docker Machine 在本地的 vSphere 主机中安装 Docker 环境。但是在云计算大爆炸的今天&#xff0c;真正让我们…

振华重工携手微软,开启港口运营数字化转型新纪元

上海振华重工&#xff08;集团&#xff09;股份有限公司&#xff08;ZPMC&#xff09;是重型装备制造行业的知名企业&#xff0c;是港口机械的领军者。企业的港口机械目前已销往93个国家和地区&#xff0c;全球占有率高达82%&#xff0c;多年保持行业领先的地位。 转型大计提上…

在JavaFX程序中嵌入Swing内容

转载自 在JavaFX程序中嵌入Swing内容 本教程描述如何在JavaFX应用程序中嵌入Swing组件。本文将讨论线程限制并提供一个可运行的应用程序来说明在JavaFX应用程序中嵌入带HTML内容的Swing按钮&#xff0c;以及Swing与JavaFX按钮间的协作性。 从JavaFX 2.0版本开始&#xff0c;…

你胆敢不加break试试?

我们经常在实际开发中会用到一些转换类&#xff0c;比如在金融界中&#xff0c;我们需要将1转换为“壹”&#xff0c;2转换成“贰”。还有类似这样的需求&#xff0c;食堂在一周内每天的菜单都是不一样的&#xff0c;周一为鱼香肉丝鸡腿&#xff0c;周二为爆炒土豆丝鲅鱼&#…

微软作为金牌会员加入Cloud Foundry基金会

在最近召开的Cloud Foundry峰会上&#xff0c;微软宣布他们已经加入了Cloud Foundry基金&#xff0c;成为金牌会员。除此之外&#xff0c;微软正在加大对开源云平台的支持力度&#xff0c;他们提供的服务包括Azure数据库&#xff08;PostgreSQL和MySQL&#xff09;的后端集成以…

你胆敢在case后面不加break试试?

我们经常在实际开发中会用到一些转换类&#xff0c;比如在金融界中&#xff0c;我们需要将1转换为“壹”&#xff0c;2转换成“贰”。还有类似这样的需求&#xff0c;食堂在一周内每天的菜单都是不一样的&#xff0c;周一为鱼香肉丝鸡腿&#xff0c;周二为爆炒土豆丝鲅鱼&#…

在Swing和Swt中使用JavaFX

转载自 在Swing和Swt中使用JavaFX 本人从08年12月份&#xff0c;JavaFX发布第一个版本开始关注它的发展。 算算到现在&#xff0c;也差不多是第五个年头了。期间经历了一些动荡&#xff0c;但JavaFX还是坚持着发展了下来&#xff0c;也经历了很多改变(这也是Java技术的特点&a…

活动: 北京Xamarin分享会第4期(2017年7月8日)

BXUG(Beijing Xamarin User Group)将举行第4期线下活动&#xff0c;本期内容预告&#xff1a; 案例演讲: "Xamarin原生跨平台开发的风险与收益"分享者: 神秘分享嘉宾Mike&#xff0c;来自国内一线互联网教育公司的研发经理&#xff0c;.NET新时代CTO联盟发起者。方案…

内存模型是怎么解决缓存一致性的

转载自 内存模型是怎么解决缓存一致性的 在再有人问你Java内存模型是什么&#xff0c;就把这篇文章发给他这篇文章中&#xff0c;我们介绍过关于Java内存模型的来龙去脉。 我们在文章中提到过&#xff0c;由于CPU和主存的处理速度上存在一定差别&#xff0c;为了匹配这种差距…

这是什么操作?java中的变量竟然可以先使用后声明?

相信大家在看到标题之后&#xff0c;是疑惑的点进来看内容的。 在看到标题之后&#xff0c;大家肯定会怀疑&#xff0c;我赵某人用java写了好几年的代码了&#xff0c;还真就没见过java中的变量能先用在声明&#xff0c;今天就是进来看看你在没有声明变量的前提下是怎么用的&a…

重写(override / overwrite)

方法的重写(override / overwrite) 1.重写&#xff1a;子类继承父类以后&#xff0c;可以对父类中同名同参数的方法&#xff0c;进行覆盖操作 2.应用&#xff1a;重写以后&#xff0c;当创建子类对象以后&#xff0c;通过子类对象调用子父类中的同名同参数的方法时&#xff0c;…

来吧学学.Net Core之项目文件简介及配置文件与IOC的使用

序言 在当前编程语言蓬勃发展与竞争的时期,对于我们.net从业者来说,.Net Core是风头正紧,势不可挡的.芸芸口水之中,不学习使用Core,你的圈内处境或许会渐渐的被边缘化.所以我们还是抽出一点点时间学学.net core吧. 那VS Code 可以编写,也可以调试Core本人也尝试啦下,但是感觉…

真正的问题应该在我身上……

渐渐地&#xff0c;学生已进入学习状态。在未测试之前&#xff0c;一直以为大家都学的很好&#xff0c;从课堂上的互动氛围就可以看得出来&#xff0c;一问问题&#xff0c;你一言他一语的……在测试之后&#xff0c;真是让我大跌眼镜&#xff0c;平时感觉表现很好的学生们&…

搞定计算机网络面试,看这篇就够了

转载自 搞定计算机网络面试&#xff0c;看这篇就够了 文章目录结构&#xff1a; 一 OSI与TCP/IP各层的结构与功能&#xff0c;都有哪些协议 运输层主要使用以下两种协议&#xff1a; UDP的主要特点&#xff1a; TCP的主要特点&#xff1a; 域名系统&#xff08;Domain Nam…

来吧学学.Net Core之登录认证与跨域资源使用

序言 学习core登录认证与跨域资源共享是越不过的砍,所以我在学习中同样也遇到啦这两个问题,今天我们就用示例来演示下使用下这2个技术点吧. 本篇主要内容如下: 1、展示一个登录认证的简单示例 2、跨域资源访问 3、跨域获取登录认证的用户信息 .Net Core使用身份认证(Auth…