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;
  • 相关阅读:
    工具函数(代码块的大小,代码块起始地址,提升进程权限)
    在共享DLL中使用MFC 和在静态库中使用MFC的区别
    虚拟机检测绕过总结--不定时更新
    OSGI原形(.NET)
    iOS开发技术分享(1)— iOS本地数据存储
    将JSON映射为实体对象(iOS篇)
    灵活的路由(上)
    github开源项目
    EF里查看/修改实体的当前值、原始值和数据库值以及重写SaveChanges方法记录实体状态
    实体能否处于非法状态
  • 原文地址:https://www.cnblogs.com/pengyin/p/6399177.html
Copyright © 2011-2022 走看看