欢迎光临散文网 会员登陆 & 注册

SQL存储过程

2021-04-30 11:15 作者:爱数据分析社区  | 我要投稿

存储过程

  1. 什么是存储过程

  2. 创建调用与删除

  3. 变量声明

  4. 参数定义

  5. 流程语句

  6. 查看存储过程

什么是存储过程

创建一组为了完成特定功能的SQL语句集

之后需要用到时就可以直接用存储过程名使用

创建的存储过程保存在数据库的数据字典中

创建调用与删除

/* 创建 */DELIMITER $$ CREATE PROCEDURE 名称()BEGIN 语句 END $$ DELIMITER ;/* 调用 */call 名称();/* 删除 */drop pROCedure 名称;

  • DELIMITER语句将标准分隔符 - 分号(;)更改为:$$,这样就不会被语句中的分号而结束,而是等到$$ 。这样才能保证整个存储过程一起提交

  • 创建完之后可以再改回到分号

变量声明

在存储过程中声明一个变量

  • DECLARE 变量名 数据类型(大小) DEFAULT 默认值;

/* 声明整形变量a默认值为0 */DECLARE a INT DEFAULT 0;/* 声明多个同类型 */DECLARE x, y INT DEFAULT 0;

分配变量值

  • 要为变量分配一个值,可以使用SET语句

SET total_count = 10 ;

  • 使用SELECT INTO语句将查询的结果赋值给一个变量

SELECT COUNT(*) INTO a FROM 表 ;

参数定义

参数的三种类型

  • IN:表示调用者向过程传入值(传入值可以是字面量或变量)

  • OUT:表示过程向调用者传出值

  • INOUT:INOUT参数是IN和OUT参数的组合。

delimiter $$ CREATE pROCedure name1(in x int ,OUT y int)BEGIN SET y = x+x;END$$ delimiter ;set  @b=3;CALL name(5,@b);SELECT @b;结果为10

定义参数

  • create produce name(参数类型 参数名称 数据类型(大小))

流程语句

  • IF语句

IF 布尔式 THEN   操作语句;END IF;  IF 布尔式 THEN   操作语句;ELSE   操作语句;END IF;

  • CASE语句

CASE 一变量 WHEN 变量满足条件1 THEN 相应语句 WHEN 变量满足条件2 THEN 相应语句...ELSE 相应语句 END CASE;

  • 循环

WHILE 条件判断 DO...相应语句...END WHILEREPEAT...相应语句...UNTIL 条件判断 END REPEATset autocommit = 0;循环语句块 commit;/* 在循环首尾加上这两条语句,可以避免循环中语句一条一条的执行。 从而提高效率,将循环完毕后所有要执行的语句一起执行 */

查看存储过程

查看所有存储过程

SHOW PROCEDURE STATUS;

查看指定数据库中的存储过程

SHOW PROCEDURE STATUS WHERE db = '数据库名';

查看指定存储过程源代码

SHOW CREATE PROCEDURE 存储过程名

自定义函数

CREATE FUNCTION 函数名(a int) Returns int

函数对比存储过程

  • 不能用临时表,只能用表变量,有些函数不能用,存储过程限制少

  • 存储过程处理的功能比较复杂,而函数实现的功能针对性强,

  • 存储过程可以执行修改表的操作,但是函数不能执行一组修改全局数据库状态的操作

  • 存储过程可以返回参数,如记录集,函数只能返回值或者表对象。存储过程的参数有in,out,inout三种,函数只有in,存储过程声明时不需要返回类型,而函数需要描述返回类型,且函数中必须包含一个有效的return语句

  • 存储过程一般是作为独立部分来执行,而函数可以作为查询语句的一个部分来调用,由于函数可以返回一个表对象,所以在查询中位于from关键字后面,sql语句中不可以含有存储过程


end

作者:IT那个小笔记



SQL存储过程的评论 (共 条)

分享到微博请遵守国家法律