欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

mysql的存储过程

程序员文章站 2022-07-06 10:02:59
什么是存储过程 1. 一组可编程的函数,是为了完成特定功能的SQL语句集 经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。 2. 存储过程就是具有名字的一段代码,用来完成一个特定的功能。 3. 创建的存储过程保存在数据库的数据字典中 为什么要用存储过程 1. ......

什么是存储过程

  1. 一组可编程的函数,是为了完成特定功能的sql语句集
    经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。
  2. 存储过程就是具有名字的一段代码,用来完成一个特定的功能。
  3. 创建的存储过程保存在数据库的数据字典中

为什么要用存储过程

  1. 将重复性很高的一些操作,封装到一个存储过程中,简化了对这些sql的调用
  2. 批量处理
  3. 统一接口,确保数据的安全
  4. 相对于oracle数据库来说,mysql的存储过程相对功能较弱,使用较少。

存储过程的创建和调用

创建存储过程

create procedure 名称()
   begin
   语句
   end $$

调用存储过程

call  名称();

删除存储过程

drop procedure  名称

存储过程变量

  1. 在存储过程中声明一个变量
  2. 使用declare语句
    declare 变量名 数据类型(大小) default 默认值;
    可以声明一个名为total_sale的变量,数据类型为int,默认值为0
declare total_sale int default 0;
  1. 分配变量值
    要为变量分配一个值,可以使用set语句
set total_count = 10;

使用select into语句将查询的结果分配给一个变量

select count(*) into total_products from products
  1. 变量的范围
    如果在存储过程中声明一个变量,那么当达到存储过程的end语句时,它将超出范围,因此在其它代码块中无法访问

存储过程参数

三种类型

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

  2. out:表示过程向调用者传出值

  3. inout:inout参数是in和out参数的组合。

定义参数:create produce name(模式,参数名称 数据类型(大小))

存储过程语句

  1. if语句
if expression then 
   statements;
end if;
##################
if expression then
   statements;
else
   else-statements;
end if;
  1. case语句
case  case_expression
   when when_expression_1 then commands
   when when_expression_2 then commands
   ...
   else commands
end case;
  1. 循环
while expression do
   statements
end while
#############
repeat
 statements;
until expression
end repeat

查看存储过程

查看所有存储过程:

show procedure status;

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

show procedure status where db = 'my_test4';

查看指定存储过程源代码

show create procedure 存储过程名