Mysql存储过程详细教程

Mysql存储过程详细教程

   点关注不迷路,欢迎再访!		

精简博客内容,尽量已行业术语来分享。
努力做到对每一位认可自己的读者负责。
帮助别人的同时更是丰富自己的良机。

目录

    • Mysql存储过程详细教程
      • 一、定义
      • 二、存储过程的特点
      • 三、创建一个简单的存储过程
        • 创建存储过程语法
        • 创建存储过程
        • 调用存储过程
      • 四、存储过程的变量
      • 五、存储过程参数
        • 1、基本语法

     平时工作使用oracle居多,最近学习mqsql语句,基本写法大同小异,今天汇总下。

一、定义

存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。

二、存储过程的特点

1、能完成较复杂的判断和运算
2、可编程行强,灵活
3、SQL编程的代码可重复使用
4、执行的速度相对快一些
5、减少网络之间的数据传输,节省开销    

三、创建一个简单的存储过程

创建存储过程语法

create procedure 名称()
begin
.........
end  

创建存储过程

create procedure MyDemo1()
begin
   select * from user_info;
end;  

调用存储过程

call MyDemo1();   

四、存储过程的变量

create procedure MyDemo2()
begin
  -- 使用 declare语句声明一个变量
  declare username varchar(32) default '';
  -- 使用set语句给变量赋值
  set username='ex_sunqi';
  -- 返回变量
  select username;
end;
  • 变量的声明使用declare,一句declare只声明一个变量,变量必须先声明后使用;
  • 变量具有数据类型和长度,varchar需要指定长度,与mysql的SQL数据类型保持一致;
  • 变量可以通过set来赋值,也可以通过select into的方式赋值;
  • 变量需要返回,可以使用select语句,如:select 变量名。
  • 存储过程中变量是有作用域的,作用范围在begin和end块之间,end结束变量的作用范围即结束。
  • 需要多个块之间传值,可以使用全局变量,即放在所有代码块之前

五、存储过程参数

1、基本语法

create procedure 名称([IN|OUT|INOUT] 参数名 参数数据类型 )
begin
.........
end
  • 传入参数:类型为in,表示该参数的值必须在调用存储过程事指定,如果不显示指定为in,那么默认就是in类型。
  • IN类型参数一般只用于传入,在调用过程中一般不作为修改和返回
  • 如果调用存储过程中需要修改和返回值,可以使用OUT类型参数
  • INOUT表示既可以输入也可以输出的参数
create procedure MyDemo3(userId int)
 begin
      declare username varchar(32) default '';
      select name into username from users where id=userId;
      select username;
 end;

你可能感兴趣的:(Mysql)