MySQL首页投稿(暂停使用,暂停投稿)程序员

mysql 触发器 函数 存储过程之(函数)

2016-07-19  本文已影响286人  搁浅的双鱼
因为以前没有写blog的习惯,之前的mysql知识也就没记录,正好现在又用到mysql的函数,所以就立即记录下吧!

区别

触发器 是在insert update之后执行sql命令,不需要任何参数和返回值

函数和存储过程类似,
区别:

查看数据库中的存储过程和函数
show procedure status; //存储过程
show function status;     //函数
查看存储过程或函数的创建代码
show create procedure proc_name;
show create function func_name;
查看视图
SELECT * from information_schema.VIEWS   //视图

SELECT * from information_schema.TABLES   //表
删除自定义方法
drop function isRead

isRead是方法名

自己写的一个demo

目的是查询我的房间在某年某个月份是否已经交过电费,返回结果0/1,
写法有点类似js的function

delimiter $$
CREATE FUNCTION isRead(in_meterTime INT,in_year Varchar(255),in_roomId INT) RETURNS int(1)  
BEGIN  
DECLARE i INT ; 
    select count(1) INTO i from (
        select distinct id from t_room where id in (select room_table_id from t_electric_meter where dfsjd_code =  in_meterTime and year = in_year and deleted = 0 )
    )t where id = in_roomId;
RETURN i;
END$$
说明

“DELIMITER $$”语句的作用是将MYSQL的结束符设置为$$,因为MYSQL默认的语句结束符为分号;所以这样设置才不会冲突

DECLARE var_name[,varname]...date_type[DEFAULT VALUE];

var_name为局部变量的名称
。DEFAULT VALUE子句给变量提供一个默认值。值除了可以被声明为一个常数外,还可以被指定为一个表达式。
如果没有DEFAULT子句,初始值为NULL

DECLARE MYPARAM INT DEFAULT 100;

定义变量之后,为变量赋值可以改变变量的默认值,MYSQL中使用SET语句为变量赋值

SET var_name=expr[,var_name=expr]...

声明3个变量,分别为var1,var2和var3

DECLARE var1,var2,var3 INT;
SET var1=10,var2=20;
SET var3=var1+var2;

MYSQL中还可以通过SELECT...INTO为一个或多个变量赋值(我的例子中就是用的这个)
eg:

DECLARE NAME CHAR(50);
DECLARE id DECIMAL(8,2);
SELECT id,NAME INTO id ,NAME FROM t3 WHERE id=2;
上一篇 下一篇

猜你喜欢

热点阅读