前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL存储过程

SQL存储过程

作者头像
木瓜煲鸡脚
发布2019-08-06 14:46:45
1.2K0
发布2019-08-06 14:46:45
举报

存储过程

  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 WHILE
REPEAT
...
相应语句
...
UNTIL 条件判断
END REPEAT
set 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语句中不可以含有存储过程
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT那个小笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档