zoukankan      html  css  js  c++  java
  • mysql中的过程procedure

    一、创建过程语法

    create procedure 过程名字(参数列表)

    begin

      -- SQL语句...

    end

    -- 创建存储过程
    delimiter $$
    create procedure my_act()
    begin
        select * from goods;
    end
    $$
    delimiter ;

    二、查看过程

    -- 查看所有过程
    show procedure status [like 'pattern'];
    
    -- 查看过程创建语句
    show create procedure 过程名字;

    三、过程调用

    -- 过程调用
    call 过程名字();

    四、过程删除

    -- 删除过程
    drop procedure 过程名字;

    五、过程参数详解
      相比函数,过程的参数多了三种限定修饰符:

      1. in    -- 值传递, 参数可以是数值或变量, 过程内部的修改不会对外部造成影响。

      2. out   -- 引用传递, 参数只能是变量。在使用前变量的数据会被置空。在过程调用结束后, 才会把过程中产生的值传给外部变量。

      3. inout  -- 引用传递, 参数只能是变量. 可以把外部的数据传给内部使用, 内部的修改也会作用到外部。同样是在调用结束后,才会改变外部的值。

      使用方式:create procedure 过程名([in 参数名 参数类型,][out 参数名 参数类型,][inout 参数名, 参数类型])

    -- 创建全局变量
    set @ga = 1;
    set @gb = 2;
    set @gc = 3;
    
    -- 过程参数示例
    delimiter $$
    create procedure pro_demo(in x int, out y int, inout z int)
    begin
        -- 查看数据进入过程后的变化
        select x, y, z;    
        
        -- 修改局部变量的值
        set x = 100;
        set y = 200;
        set z = 300;
        
        -- 查看局部变量的值
        select x, y, z;
        
        -- 查看全局变量的值以观察局部变量的修改对全局有没有影响
        select @ga, @gb,@gc;
    
        -- 修改全局变量的值
        set @ga = 'a';
        set @gb = 'b';
        set @gc = 'c';
    
        -- 查看调用结束前全局变量的值以观察过程调用结束后对全局变量的改变
        select @ga, @gb, @gc;
    end
    $$
    delimiter ;
    
    -- 调用过程
    call pro_demo(@ga, @gb, @gc);
    
    -- 过程调用结束后再次观察全局变量的值
    select @ga, @gb, @gc;
  • 相关阅读:
    谷歌浏览器默认字体最小12px的解决方案
    字符编码笔记:ASCII,Unicode和UTF8 (转)
    关于URL编码(转)
    .net 应用程序域的影子复制
    .net动态加载程序集和影子复制(Dynamic Load Assembly and Shadow Copy)
    关于.net影子复制的问题
    来得有点晚,不过博客不分先后 :)
    App Domains and dynamic loading
    AppDomain and Shadow Copy
    Delphi实现软件自动更新源代码
  • 原文地址:https://www.cnblogs.com/pengyin/p/6399177.html
Copyright © 2011-2022 走看看