【数据库】数据库视频总结(八)

                                 第九章 存储过程

目录

                                                       全局导图

                                                      理论

定义

优点

种类

规则

                                                       

                                                      操作

创建存储过程

更新存储过程

修改存储过程

删除存储过程

 

                                                            其他

临时存储过程

嵌套存储过程

查看存储过程

                                                     感谢您的阅读~


                                      全局导图

 


                                           

                                                      理论

  • 定义

存储过程是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中。存储过程包含程序流、逻辑以及对数据库的查询。可以接受参数、输出参数、返回单个或者多个结果集以及返回值。

  • 优点

1、存储过程与其他应用程序共享应用程序逻辑器,确保了数据访问和修改的一致性。存储过程有封装业务功能。

2、具有安全性和所有权连接,可附加到他们的证书。用户可以被授予权限来执行存储过程而不必直接对存储过程中引用的对象具有权限。

3、存储过程提供了安全机制。没有访问存储过程引用的表或者试图的权限的用户,也可以被授予执行该存储过程的权限。

4、存储过程允许模块化程序设计,存储过程一旦创建,以后可以在程序中调用多次。可以改进应用程序的可维护性。

5、可以减少网络通信流量。

  • 种类

用户自定义存储过程、系统存储过程、扩展存储过程

系统存储过程可以直接修改,也可以通过新建查询来查询系统存储过程。

--示例,常用的几个系统存储过程
exec sp_who sa 
exec sp_helpdb student
exec sp_monitor
  • 规则

                                                       

                                                      操作

创建存储过程

 

实例:

--创建存储过程
create procedure proc_student
@sex varchar(10)
as 
select * from student_Info where student_Sex =@sex 

--调用存储过程
exec proc_student @sex='女' 

 

使用带有默认值的参数

create proc p_emp 
 @tele  varchar(10),
 @Result varchar(20)='成绩'--创建两个参数
 as 

	select A.student_ID ,A.born_Date,A.student_Name,B.result,B.course_Name
	from student_Info A, result_Info  B
	where  A.student_ID=B.student_ID and A.tele_Number =@tele and B.result =@Result
	
--调用
exec P_emp @tele='156',@Result='115'


 

使用输出参数output

使用output关键字来指定我们输出的参数,可以直接加具体的数值。

--创建存储函数
create proc p_sorce
@name varchar(10),
@sorce int output
as 
 select @sorce=avg(result)
 from result_Info a,student_Info b
 where a.student_ID=b.student_ID and b.student_Name=@name 

--调用查看
declare @sorce1 int 
exec p_sorce @name ='张',@sorce=@sorce1 output
print @sorce1 



--或者是直接加数值
declare @sorce1 int 
exec p_sorce'张',@sorce1 output
print @sorce1 

 

更新存储过程

create proc sorceforupdate 
@id varchar(10),
@sorce int 
as 

	update result_Info set result=@sorce  where student_ID=@id

--调用
exec sorceforupdate @id='3',@sorce=100

 

修改存储过程

 

可编程环境-找到存储过程,点击修改,进行简单编辑即可。

--示例编辑结果
USE [Student]
GO
/****** Object:  StoredProcedure [dbo].[proc_student]    Script Date: 2019/11/29 16:57:05 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[proc_student]
@id varchar(10)
as 
select * from student_Info where student_ID=@id

 

删除存储过程

drop proc proc_student 

 

                                              其他

临时存储过程

# 局部的临时存储过程

## 全局的临时存储过程

实例:

--创建一个简单的临时存储过程
create procedure #get_info
as 
	select a.result,b.student_Name
	from student_Info b,result_Info a
	where a.student_ID=b.student_ID
	order by b.student_Name

exec #get_info --调用临时存储过程

若是新建一个查询,进行上面的调用,就会显示找不到存储过程,因为创建的局部临时存储过程。

下面需要删除局部临时存储过程,然后建立全局临时存储过程。

--删除局部临时存储过程
drop proc #get_info
--创建全局临时存储过程
create procedure ##get_info
as 
	select a.result,b.student_Name
	from student_Info b,result_Info a
	where a.student_ID=b.student_ID
	order by b.student_Name

--然后在不同的连接中进行调用查看,也是可以完成的
exec ##get_info

 

嵌套存储过程

避免重复性工作的出现,最多可以嵌套32层。

create proc get_classinfo
as 
select * from class_Info
exec proc_student1 '男'
print @@nestlevel

exec get_classinf

 

查看存储过程

1、 可编程性-编写存储过程脚本-create到-新查询编辑器窗口(如果要保存成文件的话,最后选择文件。)

2、使用系统存储过程

--使用语句
exec sp_helptext  proc_student

可以查看proc_student

可以直接保存成一个文件。

 

                                             感谢您的阅读~

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张_Laura

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值