zoukankan      html  css  js  c++  java
  • MySql 存储过程笔记

    存储过程

    存储过程简称过程,procedure,是一种没有返回值的函数

    创建过程:

    Create procedure 过程名字([参数列表])

    Begin

           过程体

    End

    查看过程

    函数的查看方式完全适用于过程:关键字换成procedure

    Show procedure status [like ‘’];

     

    查看创建语句

    Show create procedure pro1;

     

    调用过程(过程没有返回值,select不能访问)

    过程有一个专门的调用关键字:call

    Call pro1();

     

    修改过程&删除过程

    过程是不能修改的,只能先删除后新增

    Drop procedure 过程名

     

    过程的参数问题

    过程参数

    函数的参数需要数据类型指定,过程比函数更严格

    过程有自己的类型限定

    In : 数据只是从外部传入给内部使用(值传递),可以是数值,也可以是变量

    Out : 只允许过程内部使用(不用外部数据),给外部使用(引用传递:外部的数据先清空,才会进入到内部):(言外之意)只能是变量。

    Inout : 外部的可以在内部使用,内部修改亦可以给外部使用,只能是变量

    使用语法:

    Create procedure 过程名(in 形参名字 数据类型,out 形参名字数据 类型,inout形参名字数据 类型)

     

    调用:out 和 inout 传入必须是变量,不能是数值

     

    必须传入变量

    -- 设置变量

    set @int_1 := 1;

    set @int_2 := 2;

    set @int_3 := 3;

    select @int_1,@int_2,@int_3;

    call pro1(@int_1,@int_2,@int_3);

    select @int_1,@int_2,@int_3;

     

     

    存储过程对用变量的操作(返回)是滞后的,是在存储过程结束的时候把内部的修改的值赋值给外部传入的全局变量

    测试

    传入数据:1,2,3

    -- 设置变量

    set @int_1 := 1;

    set @int_2 := 2;

    set @int_3 := 3;

    call pro2(@int_1,@int_2,@int_3);

     

    1.   说明了局部变量和全局变量无关

    2.   在存储过程调用结束之后,系统把局部变量赋值给全局变量(只限out 和 inout两种类型)

      

    写了这么多,其实没什么用,主要解决了存储过程没有返回值的问题。做到了把内部的结果返回给外部使用

  • 相关阅读:
    g4e基础篇#1 为什么要使用版本控制系统
    软件开发的自然属性
    定时器实现延时处理
    二分查找法
    php实现循环链表
    redis实现分布式锁
    RabbitMq初探——用队列实现RPC
    RabbitMq初探——发布与订阅
    RabbitMq初探——消息均发
    RabbitMq初探——消息持久化
  • 原文地址:https://www.cnblogs.com/lkldeblog/p/7397455.html
Copyright © 2011-2022 走看看