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

      

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

  • 相关阅读:
    修改MySQL数据文件的位置
    服务名无效。请键入 NET HELPMSG 2185 以获得更多的帮助。
    索引的讲解
    运行php程序时,浏览器跳出打开和保存提示框
    ora-4031错误
    MySQL_Oracle_事物的隔离级别
    GNU与Linux
    计算机网络_第一章
    Linux网卡高级命令
    Linux RAID简介
  • 原文地址:https://www.cnblogs.com/lkldeblog/p/7397455.html
Copyright © 2011-2022 走看看