美文网首页
存储过程-入门

存储过程-入门

作者: 余于鱼不是鱼鱼鱼 | 来源:发表于2021-07-23 17:29 被阅读0次

    存储过程(Stored Procedure)就是一组可编程的函数,为了完成特定功能的sql语句集,通过编译创建保存在数据库字典中。通过指定的名称和参数调用

    存储过程(procedure)VS函数(function)

    与存储过程类似,函数也是通过一条或多条sql组成的子程序,通过编译创建保存在数据库中,通过指定函数名和参数调用

    存储过程(procedure) VS函数(function)
    使用procedure创建 使用function创建
    创建时不需要声明返回值,可以通过out返回零到多个值 创建时需要声明返回值,且返回值只有一个
    可作为独立的PL(Procedure Language过程语言)/SQL执行 不能独立执行,必须作为表达式的一部分执行

    优缺点

    • 优点:

      • 增强SQL语句功能和灵活性
      • 一次创建多次调用
    • 缺点:

      • 移植性差
      • 开发调试复杂
    创建一个存储过程

    创建一个存储引擎,给指定员工加薪

    image.png

    语法:

    CREATE PROCEDURE 存储过程名称( [IN/OUT/INOUT 参数名 参数类型] ) 
    BEGIN 
      过程体...
    END 
    结束符
    

    存储过程的参数类型有3种
    IN:表示传入参数(入参),存储过程参数默认类型(即不指定参数类型就是IN)
    OUT:返回值(出参),通过调用存储过程改变其值
    INOUT:即是入参也是出参

    创建存储过程

    delimiter //
    CREATE PROCEDURE raiseSalary ( IN employ_id INTEGER, IN raise_amount DECIMAL ) 
    BEGIN
        UPDATE `employ` 
        SET `salary` = `salary` + raise_amount 
        WHERE
            `id` = employ_id;
    END 
    // 
    delimiter ;
    

    使用delimiter //命令的作用是将结束符号";"零时改为"//",在创建完存储过程时,使用delimiter ;命令将结束符号还原
    查看存储过程

    // 查看创建的存储过程
    SELECT name,type from mysql.proc WHERE name='raiseSalary'
    
    调用

    存储过程通过关键字call调用

    image.png

    语法:CALL 存储过程名([参数.......])

    call raiseSalary(52456456,100);
    
    删除

    语法:DROP PROCEDURE [ IF EXISTS ] <过程名>

    drop procedure raiseSalary;
    

    相关文章

      网友评论

          本文标题:存储过程-入门

          本文链接:https://www.haomeiwen.com/subject/sxlymltx.html