美文网首页
SQL第19课:存储过程

SQL第19课:存储过程

作者: 周运来就是我 | 来源:发表于2018-08-29 22:31 被阅读12次

存储过程

存储过程是由SQL语句和控制语句构成的语句串(语句集合)。它不仅可以带有输入参数还可以带有输出参数,存储过程能够通过接收参数,向调用者返回结果集,结果集的格式由调用者确定。返回状态值给调用者,指明调用成功还是失败,包括针对数据库的操作语句,并且可以在一个存储过程中调用另一存储过程。 另外存储过程好处不必多说,比如支持sql重用、执行速度快、减少网络流量、安全可靠。

在sql server中存储过程分为两类:系统提供存储过程和用户自定义存储过程。 系统存储过程主要存储在master数据库中,并以sp_为前缀,主要是从系统表中获取信息;用户存储过程由用户创建并完成特定功能,这里我主要写的是用户存储过程

1. 创建存储过程

sql server中使用create procedure语句创建、编译存储过程。

语法如下:

create procedure procedure_name [;version number]
[{ @parameter data_type}
       [varying] [=default value][output]
] [,...n]
[with
        {recompile|encryption|recompile,encryption}]
  [for replication]
 as sql_statement [...n]

解释:

  • procedure_name是存储过程的名称,最多可有128个字符;
  • version number为版本号
  • @parameter是存储过程参数名。可以声明一个或多个参数,当调用该存储过程时,除非定义了参数缺省值,用户必须给出所有的参数值。一个存储过程至多有1024个参数,参数可以用作存储过程中的变量名,但参数不能用作列名、表名或其他数据库对象的名称
  • data_type是参数的数据类型。在存储过程中所有的数据类型都可被用作参数,但是如果参数为游标(cursor)数据类型,则该参数必须被指定为varing和output。
  • varying指定由output参数支持的结果集,仅应用于游标参数。
  • default value是指参数的缺省值。
  • output表明该参数是一个返回参数。用output参数可以向调用者返回信息,该参数在存储过程中可以变化,但是Text类型参数不能用作output参数。
  • recompile指明sql server并不保存该存储过程的执行计划,该存储过程每执行一次都要重新编译。默认每次调用时都使用同一计划
  • encryption为syscomments表中存储过程条目加密,防止用户查看编译后的语句。
  • for replication选项指明了该存储过程只能在复制过程中执行
  • sql_statement是包含在存储过程中的任何数量和类型的sql语句
create procedure usp_select_teacher @depart char( 10),@avg_age int output,@max_age int output
as
select * from teacher
where dname= @depart
select @max_age= max(age )
from teacher
where dname= @depart
select @avg_age= avg(age )
from teacher
where dname= @depart
if @avg_age <= 30
select ' 年龄结构'= '年龄结构偏年轻', '平均年龄' =@avg_age
if @avg_age > 30 and @avg_age <=40
select ' 年龄结构'= '年龄结构合理', '平均年龄' =@avg_age
if @avg_age > 40
select ' 年龄结构'= '年龄结构偏大', '平均年龄' =@avg_age

2.调用存储过程

sql server使用execute命令调用存储过程

示例:调用存储过程usp_select_teacher,并查看其输出参数的值。

declare @avgage int ,@maxage int
execute usp_select_teacher ' 计算机', @avgage output, @maxage output

我的运行结果如下:

image

Sql Server存储过程和函数浅谈

相关文章

  • 《mysql必知必会》读书实战笔记23-存储过程

    第23章 使用存储过程 23.1 存储过程 存储过程,是为了完成一个复杂任务,而编写的多条sql语句的集合,语句执...

  • Mysql存储过程

    阅读目录:MySQL存储过程_创建-调用-参数 存储过程:SQL中的“脚本” 创建存储过程 调用存储过程 存储过程...

  • 8、MySQL存储过程

    存储过程 存储过程是一个SQL语句集合,当主动去调用存储过程时,其中内部的SQL语句会按照逻辑执行。 1、创建存储...

  • SQL Server OFFSET 分页存储过程

    SQL Server OFFSET 分页存储过程 普通sql

  • SQL存储过程

    存储过程 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,...

  • sql 存储过程

    begin

  • SQL存储过程

    1.概念一组为完成特定功能的SQL语句集,存储在数据库中,经过第一次编辑后再次调用不许再次编辑,用户通过指定存储过...

  • SQL存储过程

    1、创建存储过程 create procedure mypl()begin insert into表名(字段...

  • SQL之存储过程

    SQL Server 存储过程 存储过程(Stored Procedure)是一组为了完成特定功能的SQL 语句集...

  • java基础-day44-MySQL进阶

    Mysql进阶 存储过程 1 什么是存储过程 1.存储过程,带有逻辑的sql语句2.之前的sql没有条件判断,没有...

网友评论

      本文标题:SQL第19课:存储过程

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