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';
  • 相关阅读:
    SVN操作指南
    .NET Tools
    SQL条件查询控件
    txt文件导入Sql Server数据库表方法
    黑盒测试用例设计方法
    JS库
    在 C# 中 ("x" == "X") 何时成立?
    奶牛问题,别人写的,自己试了一下.
    Some Cool Tips For .NET
    Excel Data Reader Read Excel files in .NET
  • 原文地址:https://www.cnblogs.com/shishibuwan/p/10974634.html
Copyright © 2011-2022 走看看