• MySQL基础-存储过程和函数


    存储过程

    含义:一组预先编译好的SQL语句的集合
    1、提高代码的重用性
    2、简化操作
    3、减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率
    
    一、创建语法
    1、参数列表包含三部分
    参数模式  参数名  参数类型
    举例:
    in  name varchar(20)
    
    参数模式:
    in:该参数可以作为输入,也就是该参数需要调用方传入值
    out:该参数可以作为输出,也就是该参数可以作为返回值
    inout:该参数既可以作为输入又可以作为输出,也就是该参数既需要传入值,又可以返回值
    
    2、如果存储过程体仅仅只有一句话,begin end可以省略
    存储过程体中的每条sql语句的结尾要求必须加分号。
    存储过程的结尾可以使用 delimiter 重新设置
    语法:
    delimiter 结束标记
    案例:
    delimiter $
    
    ①空参列表
    DELIMITER $
    CREATE PROCEDURE PROSELECT()
    BEGIN
        SELECT * FROM TABLE1;
    END $
    
    #调用
    CALL PROSELECT()$
    
    ②带in模式参数的存储过程
    CREATE PROCEDURE PROIN(IN Name VARCHAR(20))
    BEGIN
        SELECT a.*
        FROM table1 a
        RIGHT JOIN table2 b ON a.id = b.id
        WHERE b.name=Name;    
    END $
    
    CALL PROIN('高富帅')$
    
    ③带out模式参数的存储过程
    
    CREATE PROCEDURE PROINOROUT(IN girlName VARCHAR(20),OUT boyName VARCHAR(20),OUT usercp INT) 
    BEGIN
        SELECT boys.boyname ,boys.usercp INTO boyname,usercp
        FROM boys 
        RIGHT JOIN
        beauty b ON b.boyfriend_id = boys.id
        WHERE b.name=girlName;
        
    END $
    
    #调用
    CALL PROINOUT('白富美',@name,@cp)$
    SELECT @name,@cp$
    
    ④带inout参数的存储过程
    CREATE PROCEDURE PROINOUT(INOUT a INT ,INOUT b INT)
    BEGIN
        SET a=a*2;
        SET b=b*2;
    END $
    
    #调用
    SET @m=10$
    SET @n=20$
    CALL PROINOUT(@m,@n)$
    SELECT @m,@n$
    
    三、删除存储过程
    #语法:drop procedure 存储过程名
    DROP PROCEDURE PROIN;
    DROP PROCEDURE PROINOROUT,PROINOUT;
    
    四、查看存储过程的信息
    DESC PROIN;
    SHOW CREATE PROCEDURE  PROINOROUT;

    函数

    含义:一组预先编译好的SQL语句的集合,理解成批处理语句
    1、提高代码的重用性
    2、简化操作
    3、减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率
    
    一、创建语法
    1.参数列表 包含两部分:
    参数名 参数类型
    
    2.函数体:肯定会有return语句,如果没有会报错
    如果return语句没有放在函数体的最后也不报错,但不建议
    
    return 值;
    3.函数体中仅有一句话,则可以省略begin end
    4.使用 delimiter语句设置结束标记
    
    ①.无参有返回
    CREATE FUNCTION FUN1() RETURNS INT
    BEGIN
    
        DECLARE c INT DEFAULT 0;#定义局部变量
        SELECT COUNT(*) INTO c#赋值
        FROM employees;
        RETURN c;
        
    END $
    
    #调用
    SELECT FUN1()$
    
    ②有参有返回
    CREATE FUNCTION FUN2(empName VARCHAR(20)) RETURNS DOUBLE
    BEGIN
        SET @sal=0;#定义用户变量 
        SELECT salary INTO @sal   #赋值
        FROM employees
        WHERE last_name = empName;
        
        RETURN @sal;
    END $
    #调用
    SELECT FUN2('KING') $
    
    二、查看函数
    SHOW CREATE FUNCTION FUN1;
    
    三、删除函数
    DROP FUNCTION FUN2;
  • 相关阅读:
    UI 常用方法总结之--- UITableView
    UITextFiled 通知监听
    ios 本地通知
    AFNetworking 请求头的设置
    UI总结
    gitlab-server环境搭建
    redis 配置文件示例
    搭建spark集群
    kafka集群安装
    zookeeper集群搭建
  • 原文地址:https://www.cnblogs.com/-zzc/p/13899680.html
Copyright © 2020-2023  润新知