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两种类型)

      

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

  • 相关阅读:
    Python 类中方法的内部变量,命名加'self.'变成 self.xxx 和不加直接 xxx 的区别
    用foreach遍历 datagridView 指定列所有的内容
    treeView1.SelectedNode.Level
    YES NO 上一个 下一个
    正则 单词全字匹配查找 reg 边界查找 精确匹配 只匹配字符 不含连续的字符
    抓取2个字符串中间的字符串
    sqlite 60000行 插入到数据库只用不到2秒
    将多行文本以单行的格式保存起来 读和写 ini
    将秒转换成时间格式
    richtextbox Ctrl+V只粘贴纯文本格式
  • 原文地址:https://www.cnblogs.com/lkldeblog/p/7397455.html
Copyright © 2011-2022 走看看