资讯专栏INFORMATION COLUMN

MySQL存储过程 (即函数)

xiangzhihong / 3118人阅读

摘要:参考存储过程详细教程的存储过程,指的其实就是一个函数。为了方便理解,以下就不再叫它存储过程,而直接叫函数了。函数内修改的话外部变量也会变。

参考:mysql存储过程详细教程

SQL的Stored Procedure存储过程,指的其实就是一个函数
既然是函数,那么就会涉及这几个要点:定义函数、使用函数、变量、参数、返回值等。

为了方便理解,以下就不再叫它存储过程,而直接叫函数了。

在MySQL中,这几个要点的语法如下:

定义函数:CREATE PROCEDURE 函数名(参数列表) BEGIN ...具体的SQL语句... END

使用函数:CALL 函数名(参数列表);

参数类型:

IN: 参数被拷贝为函数内局部变量,不影响原本的变量值。func(IN age INT)...

OUT: 参数只是传了个引用,函数内修改的话外部变量也会变。

INOUT: 函数内修改的话外部变量也会变。

声明变量:DECLARE 变量名 类型 DEFAULT 默认值;

设置变量:SET @变量名="Jason"

使用变量:调用时用@变量名,print显示时用SELECT @变量名;

函数定义即调用

单行函数:

CREATE PROCEDURE 函数名(参数) 一句SQL语句;

-- 如:
CREATE PROCEDURE GreetWorld(@whom) SELECT CONCAT("Hello", @whom); 

多行函数:

-- 
DELIMITER //   -- 分隔符
CREATE PROCEDURE 函数名(参数类型 参数名 数据类型)
BEGIN
    具体的SQL语句
    具体的SQL语句
END //
DELIMITER ;   -- 分隔符

-- 示例:
DELIMITER //  
CREATE PROCEDURE funcName(IN p_in int)  
BEGIN   
    SELECT p_in;   
    SET p_in=2;   
    SELECT p_in;   
END //  
DELIMITER ;

调用函数:

-- 变量赋值
SET @p_in=1;  

-- 调用函数
CALL funcName(@p_in);

函数(存储过程)的其它操作:

-- 修改函数
ALTER PROCEDURE .....

-- 删除函数
DROPPROCEDURE 函数名 ;
变量操作
-- 声明一个函数内的新变量(必须放在函数最上方)
DECLARE 变量名 数据类型 DEFAULT 默认值; 

-- 设置变量值
SET @x = "Goodbye Cruel World";  
-- 或
SELECT "Hello World" into @x; 
条件控制 IF-ELSE / CASE

IF-ELSE结构:

IF param=0 THEN
    update t set s1=s1+
ELSE 
    update t set s1=s1+
END IF ;

CASE结构:

CASE var  
    WHEN 0 THEN
        insert into t values(17);  
    WHEN 1 THEN
        insert into t values(18);  
    ELSE   
        insert into t values(19);  
END CASE ;
循环语句 WHILE / REPEAT / LOOP / ITERATE

WHILE-DO方式

WHILE var < 100 DO
    具体的SQL语句。
ENDWHILE ;

REPEAT方式:

REPEAT
    具体SQL语句。
UNTIL var <= 100
ENDREPEAT ;

LOOP方式:

label: 
LOOP
    具体SQL语句。
    LEAVE label ;
END LOOP

其中,采用循环标签标签名:的方式可以加在While / Repeat / Loop前,这样就可以使用leave语句退出循环,相当于break的意思。

ITERATE迭代方式:

label:
LOOP
    IF var = 3 THEN
        ITERATE label ;
    END IF ;

    IF var >= 5 THEN
        LEAVE label ;
    END iF ;
END LOOP ;
MySQL常用内置函数

参考:Mysql常用函数总结

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/48440.html

相关文章

  • MySQL数据库DDL操作之存储过程函数

    摘要:上篇文章介绍了数据库操作中的触发器,本章将详细介绍数据库操作中的存储过程和函数,存储过程和函数在某些复杂业务场景下还是有很大作用的。定义和作用存储过程和函数是数据库中预先编译好的一个为了完成特定功能的语句集。 上篇文章介绍了MySQL数据库DDL操作中的触发器,本章将详细介绍MySQL数据库DDL操作中的存储过程和函数,存储过程和函数在某些复杂业务场景下还是有很大作用的。 1、定义和作...

    venmos 评论0 收藏0
  • Mysql面试知识点总结(进阶篇)

    摘要:第二范式建立在第一范式的基础上,要求数据库表中的每个实例或记录必须是可以唯一被区分的,即唯一标识。不同点标识符不同,函数的标识符是,存储过程是。 上一篇主要介绍一些基础的mysql知识点,这一篇我们介绍一下mysql比较重要但在开发中我们程序员很少知道的几个大点(自以为是的观点)。数据库设计三范式: 第一范式:数据库表的每一列都是不可分割的原子数据项,即列不可拆分。 第二范式:建立在...

    plus2047 评论0 收藏0
  • Mysql存储过程存储函数

    摘要:用于指定存储过程中的参数列表。语法项表示存储过程的主体部分,也成为存储过程体,其包含了需要执行的。是函数体,所有存储过程中的在存储函数中同样可以使用。注释信息,用来描述存储过程或函数。1 存储过程 1.1 什么是存储过程 存储过程是一组为了完成某项特定功能的sql语句集,其实质上就是一段存储在数据库中的代码,他可以由声明式的sql语句(如CREATE,UPDATE,SELECT等语句)和过...

    Shisui 评论0 收藏0
  • 招银网络---C++

    摘要:基本情况信息自我介绍项目介绍为什么要做测试,不去做开发测试需要哪些技能需要一定的代码能力了解计算机网络协议熟悉数据库软件测试的基础理论协调沟通能力找工作你最看重什么,报酬价值观稳定性价值观工作中,有合得来的同事在能更好 ...

    woshicixide 评论0 收藏0
  • 目前看过最全的一线大厂MySQL面试题(题+详解)

    摘要:慢查询日志设置一个阈值,将运行时间超过该值的所有语句都记录到慢查询的日志文件中。二进制日志记录对数据库执行更改的所有操作。优点不需要记录每一行的变化,减少了日志量,节约了,提高性能。所以的日志内容会非常清楚的记录下每一行数据修改的细节。 1、MySQL的复制原理以及流程 基本原理流程,3个线程以及之间的关联; 主:binlog线程——记录下所有改变了数据库数据的语句,放进master上...

    luodongseu 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<