zoukankan      html  css  js  c++  java
  • 存储过程的变量(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.传参变量是全局的,可以在多个块之间起作用

  • 相关阅读:
    mysql分表那些事
    java根据经纬度计算距离
    java Calendar类的使用
    mysql中DATETIME、DATE和TIMESTAMP的区别
    java设计模式
    dubbo教程
    Java算法
    随机产生字符串
    js根据类名获取元素的底层原理
    元素样式的获取
  • 原文地址:https://www.cnblogs.com/lirunsheng/p/10982024.html
Copyright © 2011-2022 走看看