存储过程—函数

本文详细介绍了MySQL存储过程的创建、输入输出参数的使用以及如何接收查询结果。存储过程允许预编译SQL语句,提供增强的功能、灵活性和效率。它们可以提高执行速度,减少网络流量,支持参数化查询,并有助于数据安全性。同时,通过案例展示了如何声明和操作变量,使用判断和循环语句,以及如何定义和使用游标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        SQL语句需要先编译后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的sql语句集,经过编译后存储在数据库中,用户指定存储过程的名字并给定参数来调用执行。

        存储过程是可编程的函数,在数据库中创建并保存。可以有sql语句和控制结构组成。   

1、创建存储过程        

#删除存储过程
drop procedure if exist myproc();
#创建存储过程
create procedure myproc()
begin
    #生命变量,赋值,输出到结果集
    declare i int;
    declare name varchar(5);
    set i=1;
    select i,name;
end

procedure存储过程    create创建         begin函数开始标志        end函数结束标志

declare声明变量        set操作变量       double小数类型              varchar字符串类型

boolean布尔类型       date日期类型     int整数类型        default默认值        drop删除

        数学运算:

                +-*/加减乘除

                mod(x,y)求x/y的模。

                round(x,2)x四舍五入保留两位小数

        判断语句:                

        if语句:          if 条件 then 内容

                            【elseif 条件 then 内容】

                            【else 内容】end if;

        case语句:  case 变量 when 值1 then 内容1  when  值2  then 内容2 ... else 内容n  end case

        循环语句:

        while 语句: while  条件  do     【内容】      end while;

        repeat语句:   repeat 内容  until   条件  end  repeat;

        loop语句: loop_label:loop   执行内容+【if  条件  then leave loop_label;end if】end loop;

                        leave用于立即退出循环,无需等待检查条件。


2、输入输出参数

        MySQL存储过程的参数共有三种,IN输入参数,OUT输出参数,INOUT输入输出参数。

        格式为:create procedure 过程名称([IN | OUT | INOUT]  参数名  参数类型)

        以@开头的变量时用户变量,时基于会话变量实现的,可以暂存值,并传递给同一连接下的下一条sql语句使用的变量,当客户端退出时,变量会释放。

        set @x=10;定义用户变量        call myproc(@x);传入参数        select @x;查询传出参数


3、接收查询结果

        一个或多个字段:

        select 列1 into 变量或用户变量 from 表格;

        select 列1,列2... into  变量1,变量2... form 表格;顺序和数量需要一一对应。

        游标:遍历返回的多行结果。

        步骤: 

                1、在使用游标前,必须声明他。

                2、声明后必须打开游标以供使用。

                3、对于填有数据的游标,根据需要取出各行。

                4、使用结束是必须关闭它。不明确关闭时,在执行end后自动关闭。

#定义遍历数据结束标志,必须声明在游标前。
declare done int default 0;
#定义游标
declare v_cur cursor for select语句;
#将结束标志绑定到游标
declare continue handler for not found set done=1;
#打开游标
open v_cur;
#提取游标中的业务
fetch c_cur into 列1,列2...;
#关闭游标
close v_cur;

 4、存储过程优点

        1、增强sql语言的功能和灵活性,通过控制语句的编写完成复杂的判断和运算。

        2、标准组件式编程,存储过程复用率高,且易于维护,无需修改应用源代码。

        3、较快的执行速度,存储过程是预编译的,节省了编译时间。

        4、减少网络流量,无需多次将数据传入程序运算,只需调用存储过程。大大降低网络负载。

        5、限制访问权限,进一步保证数据安全。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值