文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Mysql 创建存储过程和函数及各种例子

2023-08-21 19:05

关注

1.1 前言知识

1.1.1 语法结构

  1. 无参的存储过程
    delimiter $CREATE PROCEDURE 存储过程名()begin存储过程体end $;
  2. 有参数的存储过程
    delimiter $CREATE PROCEDURE 存储过程名(in|out|inout 参数名1 参数类型,参数名2 参数类型……)begin存储过程体end $;
  3. 删除存储过程:
    DROP PROCEDURE IF EXISTS `存储过程名`;  

1.1.2 简单解释

1.2 创建存储过程入门例子

1.2.1 无参存储过程

1.2.1.1 不带变量

  1. 创建如下:
    DROP PROCEDURE IF EXISTS `sp_select_one_age_dogs`;  delimiter $CREATE PROCEDURE sp_select_one_age_dogs()beginselect * from dog d where d.dog_age <=1;end $
    在这里插入图片描述
  2. 测试看效果
    • 查看所有的狗狗
      在这里插入图片描述
    • 调用存储过程查看年龄不超过1岁的狗狗
      call sp_select_one_age_dogs();
      在这里插入图片描述

1.2.1.2 带变量

  1. 创建如下:
    DROP PROCEDURE IF EXISTS `sp_test`;  delimiter $CREATE PROCEDURE sp_test()beginDECLARE `col_test` VARCHAR(20) DEFAULT '';select 'test' into col_test from dual;select col_test;end $;
    在这里插入图片描述
  2. 测试效果

1.2.2 有入参的存储过程

1.2.3 有出参的存储过程

1.2.4 有入参和存储的存储过程

  1. 创建存储过程
    delimiter $CREATE PROCEDURE sp_select_dogName_by_num(in dogNum int(10),out dogName varchar(20))beginselect d.dog_name into dogName from dog d where d.dog_num =dogNum;end $
    在这里插入图片描述
  2. 调用看效果
    set @dogNum := 1003;call sp_select_dogName_by_num(@dogNum,@dogName);select @dogName;
    在这里插入图片描述

1.2.5 inout的存储过程

1.3 实用存储过程例子

1.3.1 根据表名添加字段的存储过程

1.3.2 递归查询的存储过程

1.3.2.1 递归查父id的存储过程

  1. 先看想实现的效果
    在这里插入图片描述
  2. 创建存储过程
    drop procedure if exists sp_find_pId_by_deptId;delimiter $$create procedure sp_find_pId_by_deptId(inout deptId varchar(10))begin    declare count_num int(10);      SET @@max_sp_recursion_depth = 10;select count(0) into count_num from sys_company_dept t where t.`TYPE` ='1' and t.dept_id =deptId;    if (count_num = 0) then        select t.PARENT_ID into deptId from sys_company_dept t where t.dept_id =deptId;call sp_find_pId_by_deptId(deptId);     end if;end $$delimiter ;
    在这里插入图片描述
  3. 测试效果
    set @deptId:='D001';call sp_find_pid_by_deptId(@deptId);select @deptId;
    在这里插入图片描述

1.3.2.2 注意问题

2.1 创建语法 与删除语法

  1. 创建语法
    • 如下:
      delimiter $$#在函数名后面一定要加上returns 函数返回类型create function fun_get_dog_name(dogNum VARCHAR(10)) returns VARCHAR(30) begindeclare dogName VARCHAR(30);  #在函数中定义一个变量,用来接收函数返回值 函数逻辑处理return dogName;   # 返回变量                end $$
  2. 删除语法:
    drop function if exists 函数名;

2.2 创建函数例子

2.2.1 入门例子

来源地址:https://blog.csdn.net/suixinfeixiangfei/article/details/128271724

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯