MySQL 存储过程

通过本文学习 MySQL 存储过程的语法和使用。

1 基本语法

CREATE OR REPLACE PROCEDURE 存储过程名 (
    -- in/out 参数名 参数类型
    in param1 varchar(32)out param2 varchar(32)
)
BEGIN
    -- 变量名 变量类型(取值范围)
    declare var1 varchar(32);
    declare var2 varchar(32) default '';
    
    -- 定义游标遍历时,作为判断是否遍历完全部记录的标记
    declare _done int default 0;
    -- 定义游标
    declare _pqList cursor for select o.`uid`,o.`name` from grid_org_org o where o.type='17';
    -- 定义处理程序,声明当游标遍历完全部记录后将标志变量置成某个值
    declare continue handler for not found set _done=1;
    
    -- 具体实现
END;

2 给变量赋值

-- 方法1
set var1='100';
-- 方法2
select col1,col2 into var1,var2 from test_tb;
-- 方法3
set @sqlStr='select count(*) from test_tb';  -- 构造 sql 赋值给一个变量(可以之前没有定义,但要以@开头)
prepare var1 from @sqlStr; -- 预处理需要执行的动态 sql ,其中 var1 是一个变量
execute var1;  -- 执行sql语句
deallocate prepare var1;     -- 释放掉预处理段

3 游标

3.1 cursor 型游标(不能用于参数传递

  • 赋值
-- 定义变量时赋值
declare var3 cursor for select col1 from temp_tb where id='1';
  • 遍历
open _pqList;
loop_label:loop
    fetch _pqList into var1,var2;
    if _done=1 then
        leave loop_label;
    end if;

    -- 具体操作	
    if var1 is not null and length(var1)>0 then

    end if;
end loop;
close _pqList;

4 实例

create or replace procedure p_test (
  in var1 varchar(32),-- 输入参数
  out var2 varchar(32)-- 输出普通参数
)
begin
  -- 输出普通参数
  select col1 into var2 from test_tb where id=var1;
  -- set var2='10';
  
  -- 输出结果集,可多个,不用作为参数传进来
  select * from test_tb where id='1';
  select * from test_tb where id='2';
end;


扫码关注微信公众号 程序员35 ,获取最新技术干货,畅聊 #程序员的35,35的程序员# 。独立站点:https://cxy35.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值