mysql存储过程例子

记一记之前写的存储过程,就当复习啦

#大写的in意思是入参,后面是入参的名称,再后面是类型

CREATE DEFINER=`mtldb`@`%` PROCEDURE `proc_TermOnLine_Insert`(
  IN p_termno VARCHAR (12),
  IN p_curip VARCHAR (16),
  IN p_type VARCHAR (2)
)
BEGIN

#declare 意思是设置一个变量,后面跟名称和类型还有字符长度,默认值
  DECLARE m_last_machine VARCHAR (12) DEFAULT '' ;
  DECLARE m_last_logintime VARCHAR (16) DEFAULT '' ;
  DECLARE msg VARCHAR (1024) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT 'database error' ;
  DECLARE errcode INT DEFAULT 19000 ;
  DECLARE EXIT HANDLER FOR SQLEXCEPTION 
  BEGIN
    SIGNAL SQLSTATE 'HY001' SET MESSAGE_TEXT = msg,
    mysql_errno = errcode ;
  END ;
    #select.....into.....语法是查询某个值或者某些值,将查询出来的字段赋值到into里面的值
  SELECT 
    cur_machine,
    login_time INTO m_last_machine,
    m_last_logintime 
  FROM
    pro_termonlineb 
  WHERE termno = p_termno ;
  
  IF TRIM(p_type) = "0" 
  THEN IF m_last_machine <> "" 
  THEN 
  UPDATE 
    pro_termonlineb 
  SET
    last_machine = m_last_machine,
    last_login_time = m_last_logintime,
    cur_machine = p_curip,
    login_time = NOW(),
    heart_time = NOW(),
    state = '0' 
  WHERE termno = p_termno ;
  ELSE 
  INSERT INTO pro_termonlineb (
    termno,
    last_machine,
    last_login_time,
    cur_machine,
    login_time,
    heart_time,
    state
  ) 
  VALUES
    (
      p_termno,
      p_curip,
      NOW(),
      p_curip,
      NOW(),
      NOW(),
      '0'
    ) ;
  END IF ;
  END IF ;
  
  IF TRIM(p_type) = "1"  
  THEN 
  UPDATE 
    pro_termonlineb 
  SET
    heart_time = NOW(),
    state = '0' 
  WHERE termno = p_termno ;
  END IF ;
END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值