• 存储过程的变量(2)


    需求:编写存储过程,使用变量取uid=2的用户名

    Delimiter $$
    create procedure testa()
    Begin
    Declare my_uname varchar(32) default  ‘’;
      set my_uname=‘hxf’;
      select uname into my_uname from users where uid=2;
      select my_uname;
    end;
    $$
    Delimiter ;

    1.变量的声明使用declare,一句declare只声明一个变量,变量必须先声明后使用
    2.变量具有数据类型和长度,与mysql的SQL数据类型保持一致,因此甚至还能指定默认值、字符集和排序规则等
    3.变量可以通过set来赋值,也可以通过select into的方式赋值
    4.变量需要返回,可以使用select语句,如:select 变量名

    需求:统计表hxf,users的行数量和users表中最早,最晚的注册时间。

    Delimiter $$
    create procedure stats_user()
    Begin
         begin
              Declare hxf_sum int default 0;
              Declare users_sum int default 0;
              select count(*) into hxf_sum from hxf;
              select count(*) into users_sum from users;
              select hxf_sum,users_sum;
         end;
    
         begin
             Declare max_regtime  timestamp;
             Declare min_regtime  timestamp; 
             select max(regtime),min(regtime)  into max_regtime,min_regtime from users ;
             select  hxf_sum,users_sum,max_regtime,min_regtime;
         end;
    end;
    $$
    Delimiter ;

    1.变量是有作用域的,作用范围在begin与end块之间,end结束变量的作用范围即结束。
    2.需要多个块之间传递值,可以使用全局变量,即放在所有代码块之前。
    3.传参变量是全局的,可以在多个块之间起作用

  • 相关阅读:
    二十一.组合模式
    二十四.桥接模式
    二十六.职责链模式
    二十五.命令模式
    将小写转化成大写
    备份JOB SCHEDULE ENTRY的简单方法
    如何确定哪一个作业锁定QDLS下的一个目标
    WRKACTJOB命令一些有用功能介绍
    如何使用CA/400批处理的方式传输数据
    用前缀给字段命名
  • 原文地址:https://www.cnblogs.com/lirunsheng/p/10982024.html
Copyright © 2020-2023  润新知