mysql存储过程和存储函数初步

1.存储过程
delimiter $  //首先声明自定义结束符
 create procedure show_times()  //存储过程名
 begin 
    //需要执行的语句
     select 'local time is',current_timestamp; 
     select 'UTC time is:',UTC_TIMESTAMP; 
 end $   //结束
调用存储过程: call show_times()$

2.带参数的存储过程
create procedure test_count(t int) 
begin 
select count(*) from t2 where t1=t; 
end $
3.存储函数
 delimiter $ ;
 create function test_count2(t int) 
 returns int   //返回一个int类型
 reads sql data 
 begin    
  return (select count(*)from t2 where t1=t); 
  end $
调用存储函数:select test_count2(1)$
4.---存储过程out参数
  create procedure test_sum(out t2_sum int,out t1_sum int) 
  begin 
      
  select sum(t2) from t2 into t2_sum; 
  select sum(t1) from t2 into t1_sum; 
  end $
  --调用
  call test_sum(@sumT2,@sumT1)$
  --取值
  select @sumT2,@sumT1$
5.--触发器
   create trigger bt1 before insert on t2 
 for each row 
 begin 
     set new.dt=current_timestamp; 
     if new.t1<0 then set new.t1=0; 
     elseif new.t1>100 then set new.t1=100; 
     end if; 
     end $
附表结构:
CREATE TABLE `t2` (
  `t2` int(11) NOT NULL AUTO_INCREMENT,
  `t1` int(11) DEFAULT NULL,
  `dt` datetime DEFAULT NULL,
  `name` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`t2`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8

6.存储函数必须遵守一条规则:不允许对调用本函数的表进行读和写的数据进行修改。
存储过程没有这个限制,但是如果存储过程在存储函数中调用就需要遵守这条规则。




转载于:https://my.oschina.net/fangfeiAI/blog/309194

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值