博客
关于我
MySQL高级-存储过程和函数
阅读量:789 次
发布时间:2023-02-13

本文共 2149 字,大约阅读时间需要 7 分钟。

存储过程和函数

1. 存储过程和函数概述

存储过程和函数是事先经过编译并存储在数据库中的一段 SQL 语句的集合。调用存储过程和函数可以简化应用开发人员的工作,减少数据在数据库和应用服务器之间的传输,对提高数据处理效率有好处。

存储过程和函数的主要区别在于,函数必须有返回值,而存储过程没有。函数是一个有返回值的过程;存储过程是一个没有返回值的函数。

2. 创建存储过程

2.1 语法
CREATE PROCEDURE procedure_name ([proc_parameter[,...]]) begin    -- SQL 语句end;
2.2 注意事项
  • 在命令行中使用 SQL 语句时,最后需要加上分号,否则 SQL 语句不会执行。
  • 在 MySQL 中,分隔符默认是分号。要更改分隔符,可以使用 DELIMITER 关键字。
2.3 示例
mysql> delimiter $mysql> create procedure pro_test1()    -> begin    -> select * from city;    -> end$
2.4 知识小贴士

DELIMITER 用于声明 SQL 语句的分隔符。默认情况下,分隔符是分号。通过 DELIMITER $ 可以将分隔符更改为 $

3. 调用存储过程

3.1 语法
call procedure_name() ;
3.2 示例
mysql> call pro_test3()    -> +-------------+| hello mysql |+-------------+| hello mysql |+-------------+1 row in set (0.04 sec)

4. 查看存储过程

4.1 查询存储过程
-- 查询数据库中所有存储过程select name from mysql.proc where db='db_name';-- 查询存储过程的状态信息show procedure status;-- 查询某个存储过程的定义show create procedure test.pro_test1 \G;
4.2 示例
mysql> select name from mysql.proc where db='demo_01'    -> +-----------+| name      |+-----------+| pro_test1 || pro_test2 || pro_test3 |+-----------+3 rows in set (0.06 sec)

5. 删除存储过程

5.1 语法
DROP PROCEDURE  [IF EXISTS] sp_name ;
5.2 示例
mysql> drop procedure pro_test3    -> Query OK, 0 rows affected (0.00 sec)

6. 存储过程的语法

6.1 变量
  • 使用 DECLARE 声明局部变量。
declare var_name[,...] type [default value];
6.2 条件判断
  • 使用 IF 语句进行条件判断。
if search_condition then statement_list [elseif search_condition then statement_list] ... [else statement_list] end if;
6.3 传递参数
  • 输入参数使用 IN 关键字,输出参数使用 OUT 关键字,混合参数使用 INOUT 关键字。
create procedure procedure_name([in/out/inout] 参数名 参数类型) ...
6.4 case 结构
  • 使用 CASE 结构进行条件判断。
CASE case_value WHEN when_value THEN statement_list [WHEN when_value THEN statement_list] ... [ELSE statement_list] END CASE;
6.5 循环控制
  • 使用 while 循环进行循环控制。
while search_condition do statement_list end while;

7. 存储函数

7.1 语法
CREATE FUNCTION function_name([param type ... ]) RETURNS type BEGIN ... END;
7.2 示例
delimiter $ create function count_city(countryId int) returns int begin    declare cnum int;    select count(*) into cnum from city where country_id = countryId;    return cnum;end$delimiter ;
7.3 调用示例
select count_city(1);select count_city(2);

转载地址:http://hhdfk.baihongyu.com/

你可能感兴趣的文章
mysql技能梳理
查看>>
Mysql报错Packet for query is too large问题解决
查看>>
Mysql报错:too many connections
查看>>
MySQL报错:无法启动MySQL服务
查看>>
mysql排序查询
查看>>
Mysql插入数据从指定选项中随机选择、插入时间从指定范围随机生成、Navicat使用存储过程模拟插入测试数据
查看>>
mysql操作数据表的命令_MySQL数据表操作命令
查看>>
mysql支持表情
查看>>
MySQL改动rootpassword的多种方法
查看>>
mysql数据分组索引_MYSQL之索引配置方法分类
查看>>
mysql数据取差,mysql屏蔽主外键关联关系
查看>>
MySQL数据和Redis缓存一致性方案详解
查看>>
Mysql数据库 InnoDB存储引擎中Master Thread的执行流程
查看>>
MySQL数据库 范式
查看>>
Mysql数据库B-Tree索引
查看>>
mysql数据库io空闲_mysql数据库磁盘io高的排查
查看>>
MYSQL数据库下载安装(Windows版本)
查看>>
MySQL数据库与Informix:能否创建同名表?
查看>>
Mysql数据库函数contac_函数:函数删除操作语法&使用例——《mysql 从入门到内卷再到入土》...
查看>>
mysql数据库命令备份还原
查看>>