美文网首页
数据库基础-存储过程

数据库基础-存储过程

作者: 一书文集 | 来源:发表于2018-11-28 09:13 被阅读21次
  • 能实现指定功能的程序,通过存储过程的名称和参数来调用存储过程,"数据库对象".

优点

-执行速度快,先将存储过程编译成二进制可执行代码
-模块式编程,在程序中被多次调用,并且当修改存储过程后,调用该存储过程的程序运行结果均会被修改,
提高了程序的可移植性
-减少网络流量 只需要使用存储过程名称及参数,
上传的字符数更少
安全性:需要访问数据表但又没有权限时
通过存储过程来存取

分类

系统,sp_ 为前缀,
用户自定义存储过程:由用户自行创建的存储过程。

使用 CREATE PROCEDURE 语句创建存储过程

create proc proc_st
as
select * from student
  • 使用 EXECUTE 语句调用存储过程
EXEC PROC_ST

创建带输入参数的存储过程

-- 通过学号查询姓名

create proc proc_query1
@query_no char(10)
as select StuName 
from student
where stuno = @query_no
  • 给输入参数设置默认值
    -- 通过学号查询姓名,输入参数默认值设置为 0463501107
create proc proc_query2
@qeury_no char(10) = '0463501107
'
as
select stuname
from student
where stuno = @query_no

-- 通过学号查询姓名,输入参数默认值设置为 NULL

create proc proc_query3
@query_no char(10) = null
as 
select stuName
from student
where stuNo = @query_no
create proc proc_query4
@query_no char(10) = null
as 
if @query_no is null
print '请你输入学号‘
else 
select stuname
from student 
where stuno = @query_no

创建带输出参数的存储过程

输出参数用 OUTPUT
-- 等差数列求和

create proc proc_sn
@n int, 
@n int output
as
declare @k int, @sum int
select @k=1, @sum=0
where @k < @m
while @x <= @m
  begin 
    select @sum = @sum+@x
    select @x = @x+1
  end
select @n = @sum

while( x <m)
 {sum = sum + x
  x++
}
n = sum
output  n
  • 使用 EXECUTE 语句调用存储过程
DECLARE @Y INT
EXEC PROC_SN 5,@Y OUTPUT
SELECT @Y

创建有多条 SQL 语句的存储过程

-- 通过特定课程名称查询课程的平均分、
最高分和
最低分,并查询出
成绩高于平均分的学生信息

create proc proc_multi
@couname_multi char(30)
as 
declare @avg_score decimal(5,1)
/* 通过特定课程名称查询课程的平均分、最高分和最低分 */
select avg(score) as 平均分,
           max(score) as 最高分,
            min(score) as 最低分
from score as s
  inner join course as c
  on s.couno = c.couno
where c.couname = @couname_multi

/* 将平均分赋值给变量 @COUNAME_MULTI */

select @avg_score = avg(score)
from score as s 
  inner join course as c
  on s.couno = c.couno
where c.couname = @couname_multi

/* 查询出成绩高于平均分的学生信息 */
select st.stuno, st.stuname,c.couname, s.score
from student as st
-- 连接
  inner join score as s
  on st.stuno = s.stuno

  inner join =c.couno
--查询条件
where c.couname = @couname_multi
and s.core > @avg_score

--调用
select *
from course
exec proc_multi 'sql设计'

修改存储过程

-修改咋们用alter
alter proc proc_st
as 
select * from student
where classno = ’20040001‘

删除存储过程

-删除drop.. 
DROP PROC PROC_ST

系统存储过程

系统存储过程可以从任何数据库中执行系统存储过程,而无需使用 master 数据库名称来完全限定该存储过程的名称。

sp_help Student

相关文章

  • 数据库面试题

    数据库基础(面试常见题) 一、数据库基础 Oracle对象有哪些? 答案:表,表空间,用户,视图,索引,存储过程,...

  • 存储过程(一)

    在如下数据库中做操作 存储过程的创建 创建最基础的存储过程 在此基础上,使用聚合函数 在聚合函数的基础上,使用参数...

  • 数据库基础-存储过程

    能实现指定功能的程序,通过存储过程的名称和参数来调用存储过程,"数据库对象". 优点 -执行速度快,先将存储过程编...

  • Oracle存储过程语法详解—及8道案例练习

    本文主要讲解ORACLE数据库的存储过程,如果想学习了解MYSQL数据库的存储过程可参考本篇文章mysql存储过程...

  • 存储过程

    数据库存储过程

  • SQL Server存储过程总结

    SQL Server存储过程总结 存储过程简介: 存储过程(Stored Procedure)是在大型数据库中,一...

  • 存储过程

    1.什么是存储过程: 存储过程与存储函数 存储过程是数据库预先编译好,放在数据库内存中的一个程序片段,所有具备性能...

  • Oracle学习笔记(六)

    数据库对象:表、视图、索引、序列、同义词、存储过程、存储函数、包头、包体。 存储过程和存储函数是指在数据库中提供所...

  • SQL语言:存储过程

    前言 本章我们将学习数据库中的存储过程,了解什么是存储过程,以及在MySQL中创建和调用存储过程。 存储过程是什么...

  • sql基础(4)存储过程

    (一)存储过程常用SQL命令 -- 存储过程 use test #打开数据库 show PROCE...

网友评论

      本文标题:数据库基础-存储过程

      本文链接:https://www.haomeiwen.com/subject/hwwoqqtx.html