数据库的存储过程

下面的代码示例为sqlserver。

对于数据库的操作可以每次直接输入SQL语句,也可以使用过程存储。
这里写图片描述
两者的区别
存储过程是创建好就存在与数据中当中的,所以可以大大提高效率,减少一些重复性的操作。
例如:对于学生表当中要插入10000条记录,如果只简单使用SQL语句,需要输入重复性的语句INSERT INTO STUDENT VALUES

注:下文的代码演示基于一张学生表,课程表,和一张成绩表

这里写图片描述

创建存储/删除过程

格式;
create procedure 名字
as
需要定义的参数
begin
需要进行的操作
end

注:如果要进行的操作只是一句语句的话,可以省略begin end

下面是示例,先是简单的查询

--创建一个存储过程,查询课程名和成绩
create procedure FindAllStudentCredit
as
select cname,ccredit from course;

--执行一个存储过程
exec FindAllStudentCredit

--通过课程编号查询课程名称
create procedure FindCnameByCno
@cno char(1)
as
select cname from course
where @cno=cno;

--执行该过程
exec FindCnoByCname '201215121'

参数类型:

* 输入型参数(默认)
* 输出型参数(需要在参数后面加上OUTPUT)

在执行存储过程的时候,如果要输出一个输出型参数需要在后面加上OUTPUT

带输入型参数

在书写存储过程的代码时,定义的变量和一些高级语言,如c/c++之类有一点区别。

  • 先写变量的名称,然后再写类型
  • 变量名前必须加一个@符号

下面再看一个例子:

--学生表中插入一条记录,判断所在院系,人数超过两人则插入失败
create procedure AddStudent
@Sno char(9),
@Sname varchar(10),
@Ssex char(2),
@Sage smallint,
@Sdept char(2)
as
begin
    declare @count smallint
    select @count=count(*) from student where sdept=@Sdept
    if(@Sdept<=2)
    insert into student values(@Sno,@Sname,@Ssex,@Sage,@Sdept)
end

执行语句如下:

这里写图片描述

输出型参数

基于需求我们不能每次都把查询结果输出在结果栏,比如输出在文件内。
那么来看下面一个例子:

--输入学号,返回对应的学生姓名
create procedure FindSnameBySno
@Sno char(9),
--定义的输出型参数后面必须说明output
@Sname varchar(10) output
as
begin
    select @Sname=sname from student
    where @Sno=sno
end

再来看一下执行的语句:

--要先定义一个输出型参数,再使用print关键字
declare @Sname varchar(10)
exec FindSnameBySno '201215121',@Sname output
print @Sname

综上就是针对存储过程的一些小的用法总结,后面还会继续添加关于这方面的用法,需要注意的是,定义的参数类型,必须和表中的类型相同。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值