zoukankan      html  css  js  c++  java
  • mysql学习笔记-存储过程与函数

    1、存储过程

    语法

    CREATE
        [DEFINER = user]
        PROCEDURE sp_name ([proc_parameter[,...]])
        [characteristic ...] routine_body
    
    proc_parameter:
        [ IN | OUT | INOUT ] param_name type

    2、自定义函数

    CREATE
        [DEFINER = user]
        FUNCTION sp_name ([func_parameter[,...]])
        RETURNS type
        [characteristic ...] routine_body
    
    func_parameter:
        param_name type

    3、存储过程与自定义函数区别

    
    存储过程实现的过程要复杂一些,而函数的针对性较强;
    
    存储过程可以有多个返回值,而自定义函数只有一个返回值;
    
    存储过程一般独立的来执行,而函数往往是作为其他SQL语句的一部分来使用;

    存储过程说白了就是把经常使用的SQL语句或业务逻辑封装起来,预编译保存在数据库中,当需要的时候从数据库中直接调用,省去了编译的过程.提高了运行速度;
    同时降低网络数据传输量

    4、SHOW STATUS 、SHOW CREATE 以及系统的information_schema表

    • MySQL中可以使用 SHOW STATUS 语句或 SHOW CREATE 语句查看存储过程和函数的状态信息 ,也可以直接从系统的information_schema中查询。
    • CREATE PROCEDURE test_1(IN invalue INT(11),OUT outvalue INT(11))
      BEGIN
          set outvalue = 100 * invalue;
      END;
      
      CREATE FUNCTION test_2(invalue INT(11))RETURNS INT(11)
      BEGIN
          RETURN (100 * invalue);
      END;
      
      -- 查看状态
      SHOW PROCEDURE STATUS;
      SHOW PROCEDURE STATUS LIKE 'test_%';
      SHOW FUNCTION STATUS;
      
      -- 查看定义
      SHOW CREATE PROCEDURE test_1;
      SHOW CREATE FUNCTION test_2;
      
      -- information_schema.Routines表中查看
      SELECT * FROM information_schema.ROUTINES where ROUTINE_NAME='test_1';
  • 相关阅读:
    Selenium操作之滚动条
    IntelliJ IDEA代码编码区提示库源不匹配字节码解决办法
    自动化测试浅谈
    json-lib解析json之二维JSONArray
    Java 多态
    Java0基础教程——java的安装
    LAYUI弹出层详解
    ajax实现动态URL
    js serialize()
    TP5.1接入支付宝实现网页/APP支付完整请求回调流程(沙箱环境)
  • 原文地址:https://www.cnblogs.com/shishibuwan/p/10974634.html
Copyright © 2011-2022 走看看