MySQL数据库-----存储过程、存储函数 的创建、调用、查看、修改和删除(详解)

  • 存储程序可以分为存储过程和存储函数。
  • 简单来说,存储过程就是一条或者多条SQL语句的集合,可视为批文件,但是起作用不仅限于批处理。
  • 使用call语句来调用存储过程,只能用输出变量返回值。
  • 函数可以从语句外调用(即通过引用函数名),也能返回标量值。
  • 存储过程可以调用其他存储过程

MySQL中存储过程和存储函数的区别:

  • 在本质上他们都是存储程序。
  • 存储函数只能通过return 语句返回 单个值 或者 表对象
  • 存储过程中不能执行return语句,但是可以通过out参数 返回多个值
  • 存储函数限制较多,不能用临时表,必须用表变量等等。
  • 存储过程的限制相对就比较少
  • 存储函数可以嵌入在SQL语句中使用,可以在色狼了传统语句中作为查询语句中的一部分调用。
  • 存储过程一般是作为一个独立的部分来执行

创建存储过程

create procedure 存储过程的名称 ([指定存储过程的参数列表])
    [指定存储过程的特性]
    SQL代码内容(可用 begin和 end来表示代码的开始于结束)

# 即语法形式如下  
create procedure 存储过程的名称 ([指定存储过程的参数列表])
    [指定存储过程的特性]
    begin
        sql语句
    end;
  • 存储过程的参数列表的形式如下:
    [ in | out | inout ] 参数名称 参数类型
    
    • 其中in表示输入参数,out表示输出参数;
    • inout表示既可以输入也可以输出。
  • 示例
    • 创建一个查看fruits表的存储过程
    # ()代表无参
    create procedure proc()
        begin
            select * from fruits;
        end;
    
    • 代码优化,添加delimiter语句
    mysql>  delimiter //
    mysql>  create procedure proc()
                begin
                    select * from fruits;
                end //
    mysql>  delimiter ;
    
    • 使用delimiter 语法的原因
      • 因为mysql默认结束符是“;”,为了避免与存储过程中的SQL语句相冲突,需要使用delimiter语法改变存储过程的结束符,最后在恢复默认的结束符。
delimiter语法介绍
  • “delimiter //” 语句的作用是将mysql的结束符设置为//
  • “delimiter ; ” 语句将mysql的结束符恢复为默认值 ;
  • 其中delimiter 也可以指定其他符号作为结束符
  • 但是:应该避免使用反斜杠(\),因为反斜杠是mysql中的转义字符。

创建存储函数

create function 存储函数名称 ([存储函数的参数列表])
    returns 返回数据的类型
    [指定存储过程的特性]
    return value(sql语句)
  • 如果在存储函数中的return语句返回一个类型不同于函数的returns子句中指定类型的值,那么返回值将被强制为恰当的类型。比如,如果一个函数返回一个enum或者set值,但是return语句却返回了一个整数,对于set成员集的相应的enum成员,从函数返回的值是字符串。
  • 存储过程的参数列表的指定参数为in、out、inout指对procedure是合法的。(function 中总是默认为 in参数)
  • 示例
    • 创建一个存储函数,名称为Name,该函数返回select语句的查询结果,返回的数值类型为字符串类型:
    create function Name ()
        returns varchar(20)
        return (select name from students where id=5);
    
    • 使用delimiter优化代码
    mysql>  delimiter //
    mysql>  create function Name ()
                returns varchar(20)
                return (select name from students where id=5);
            //
    mysql>  delimiter ;
    

调用存储过程

  • 使用 call语句调用存储过程
call 存储过程名称(存储过程的参数列表)
  • 定义一个名为CountProc1的存储过程,然后调用这个存储过程
    # 定义存储过程
    mysql>  delimiter //
    mysql>  create procedure CountProc1 (in sid int, out num int)
                begin
                    select count(*) into num from students where id=sid;
                end //
    mysql>  delimiter ;
    
    # 调用存储过程
    mysql>  call CountProc1 (101, @num);
    

调用存储函数

  • 使用select调用存储函数
select 存储函数名称 (存储函数参数列表);

查看存储过程和存储函数

1、查看存储过程和函数的状态
  • 查看存储程序的特性,如 数据库、名字、类型、创建者、创建和修改日期等
  • 基本语法格式如下
show {procedure | function} status [like '存储名称'];
2、查看存储过程和函数的定义
  • 查看存储程序的名称、具体的定义语句、还有数据库设置的一些信息。
  • 基本语法格式如下
show create {procedure | function} 存储名称;
3、查看存储过程和函数的信息
  • 在MySQL中,存储过程和函数的信息存储在 information_schema 数据库下的 Routines 表中。
  • 可以通过查询表的记录来查询存储过程或者函数的基本信息。
  • 基本语法格式如下
select * from infromation_schema.Routines
where routine_name='存储名称' [and routine_type='{function | procedure}'];

修改存储过程和函数

  • 使用alter语法可以修改存储过程或函数的特性
  • 基本语法格式如下
alter {function | procedure} 存储名称 [指定存储程序的特性];

删除存储过程和函数

  • 基本语法格式如下
drop {function | procedure} 存储名称;

问题:存储过程和存储函数 中的参数如何使用中文?

答案链接:https://blog.csdn.net/weixin_43622863/article/details/88104137

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL数据库是一种常用的关系型数据库管理系统。存储过程函数MySQL数据库的两个重要特性,通过存储过程函数,可以实现对数据库的高效操作。下面将详细介绍存储过程函数的构建与使用。 首先,存储过程是一组经过预编译的SQL语句集合,可以被调用执行。在MySQL中,存储过程的构建可以通过CREATE PROCEDURE语句来完成。存储过程可以带有输入参数、输出参数和返回值。通过参数的使用,可以在存储过程中实现灵活的数据处理。存储过程可以被直接调用,也可以被其他存储过程函数调用。 其次,函数是一段可重用的SQL代码块,可以被其他SQL语句直接调用。在MySQL中,函数的构建可以通过CREATE FUNCTION语句来完成。函数可以返回一个值,也可以返回一个。与存储过程不同的是,函数不能直接进行数据修改操作,而是在查询时返回需要的结果。 存储过程函数都可以提高数据库的性能和安全性。存储过程可以减少客户端与数据库服务器之间的通信次数,提高执行效率;函数可以封装复杂的查询逻辑,方便其他SQL语句调用,提高代码的重用性。此外,存储过程函数都可以设置权限控制,确保数据的安全性。 在使用存储过程函数时,需要注意以下几点:首先,参数的定义和使用需要按照正确的格式和规范进行;其次,在存储过程函数内部,可以使用多种语句,如SELECT、INSERT、UPDATE和DELETE,以实现不同的数据操作需求;最后,在使用存储过程函数前,需要确保已经创建了相应的数据库结构。 总之,通过存储过程函数的构建与使用,可以实现对MySQL数据库的高效操作。存储过程函数提供了一种灵活、可重用的方式来处理数据,提高了数据库的性能和安全性。在实际应用中,可以根据具体的需求,合理地使用存储过程函数,以提升系统的效率和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值