• MySQL存储过程的创建及调用


    原文连接 https://www.cnblogs.com/geaozhang/p/6797357.html#chuangjian

    #SQL语句:先编译后执行

    存储过程(Stored Procedure):

      一组可编程的函数,是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。

     

    优点(为什么要用存储过程?):

      ①将重复性很高的一些操作,封装到一个存储过程中,简化了对这些SQL的调用

      ②批量处理:SQL+循环,减少流量,也就是“跑批”

      ③统一接口,确保数据的安全

    相对于oracle数据库来说,MySQL的存储过程相对功能较弱,使用较少。

     

    一、存储过程的创建和调用

      >存储过程就是具有名字的一段代码,用来完成一个特定的功能。

      >创建的存储过程保存在数据库的数据字典中。

    1、创建存储过程

    CREATE
        [DEFINER = { user | CURRENT_USER }]
     PROCEDURE sp_name ([proc_parameter[,...]])
        [characteristic ...] routine_body
    
    proc_parameter:
        [ IN | OUT | INOUT ] param_name type
    
    characteristic:
        COMMENT 'string'
      | LANGUAGE SQL
      | [NOT] DETERMINISTIC
      | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
      | SQL SECURITY { DEFINER | INVOKER }
    
    routine_body:
      Valid SQL routine statement
    
    [begin_label:] BEGIN
      [statement_list]
        ……
    END [end_label]

    2.如何使用存储过程

    实际上没有必要记一些语法格式,只要知道如何完成实际业务逻辑就行

    这里我们针对user表演示一个存过程操作 在navigat中叫函数,我其实觉得存储过程与自定义函数没有任何区别

    这里如何理解

    二、存储过程的参数

      存储过程可以有0个或多个参数,用于存储过程的定义。

    3种参数类型:

      IN输入参数:表示调用者向过程传入值(传入值可以是字面量或变量)  //通过 set @name=xxx设置变量

      OUT输出参数:表示过程向调用者传出值(可以返回多个值)(传出值只能是变量) 

      INOUT输入输出参数:既表示调用者向过程传入值,又表示过程向调用者传出值(值只能是变量) //设置一个变量可以反复读取

     看到这几个参数想必都明白,这里我们选择in 测试一个sql语句 update set where

    编辑好以后 自动把没有意思语句创建好了

    下面写核心语句

    这样就完成一个存储过程,选择运行输入就能进行测试

     CALL sss('name')  //调用存储过程:call sp_name[(传参)];

    3、存储过程体

      >存储过程体包含了在过程调用时必须执行的语句,例如:dml、ddl语句,if-then-else和while-do语句、声明变量的declare语句等

      >过程体格式:以begin开始,以end结束(可嵌套)

    复制代码
    BEGIN
      BEGIN
        BEGIN
          statements; 
        END
      END
    END
    复制代码

    注意:每个嵌套块及其中的每条语句,必须以分号结束,表示过程体结束的begin-end块(又叫做复合语句compound statement),则不需要分号。

     

     

    4、为语句块贴标签

    [begin_label:] BEGIN
      [statement_list]
    END [end_label]

    例如:

    复制代码
    label1: BEGIN
      label2: BEGIN
        label3: BEGIN
          statements; 
        END label3 ;
      END label2;
    END label1
    复制代码

    标签有两个作用:

      ①增强代码的可读性

      ②在某些语句(例如:leave和iterate语句),需要用到标签

     

     

  • 相关阅读:
    DELL、HP、IBM X86服务器命名规则
    容灾,热备,集群等区别
    HDS(日立)AMS2000系列存储管理配置方法
    KBMMW 4.90.00 发布
    delphi 10 seattle 安卓服务开发(三)
    delphi 10 seattle 安卓服务开发(二)
    delphi 10 seattle 中 解决IOS 9 限制使用HTTP 服务问题
    Android 中的 Service 全面总结(转载)
    KBMMW 4.84.00 发布
    delphi 10 seattle 安卓服务开发(一)
  • 原文地址:https://www.cnblogs.com/dgwblog/p/9313798.html
Copyright © 2020-2023  润新知