美文网首页MySQL首页投稿(暂停使用,暂停投稿)程序员
mysql 触发器 函数 存储过程之(函数)

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

作者: 搁浅的双鱼 | 来源:发表于2016-07-19 17:10 被阅读286次
因为以前没有写blog的习惯,之前的mysql知识也就没记录,正好现在又用到mysql的函数,所以就立即记录下吧!

区别

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

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

  • 一般来说函数都是返回一个值或者表对象,返回多个值最好用存储过程
  • 存储过程一般是作为一个独立的部分来执行( EXECUTE 语句执行),而函数可以作为查询语句的一个部分来调用(SELECT调用),由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。 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默认的语句结束符为分号;所以这样设置才不会冲突

  • 1、定义变量

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

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

DECLARE MYPARAM INT DEFAULT 100;
  • 2、为变量赋值

定义变量之后,为变量赋值可以改变变量的默认值,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;

相关文章

  • MySQL 视图和存储程序

    MySQL 视图和存储程序 存储程序:存储函数、存储过程、触发器和事件的总称。 存储例程:存储函数+存储过程。 触...

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

    因为以前没有写blog的习惯,之前的mysql知识也就没记录,正好现在又用到mysql的函数,所以就立即记录下吧!...

  • MySQL 存储过程与函数

    触发器,函数,存储过程 1 存储过程与函数的区别 本质上没区别,执行的本质都一样。 函数有且只能返回一个变量存储过...

  • 存储程序 - 自定义变量

    原文链接-定义变量原文链接-存储函数原文链接-存储过程原文链接-游标简介原文链接-触发器和事件简介 MySQL 中...

  • mysql使用规定

    使用约定 不使用存储过程 不使用自定义的函数, 尽量不使用MySQL的函数 不使用触发器 不使用全文索引 不使用分...

  • PL/SQL之存储过程

    存储过程、存储函数和触发器 存储过程和存储函数定义:指存储在数据库中供所有用户程序调用的子程序叫存储过程或存储函数...

  • 存储程序--存储过程

    原文链接-定义变量原文链接-存储函数原文链接-存储过程原文链接-游标简介原文链接-触发器和事件简介 存储函数和存储...

  • MySQL学习笔记(一、MYSQL基本架构)

    如图所示,MySQL分为Server层(存储过程、触发器、视图以及内置函数都在这层实现)和存储引擎层两部分 连接器...

  • mysql的存储过程及其使用场景,和存储函数的区别

    简单了解什么是存储过程,以及存储过程的使用场景,和存储函数、触发气的区别: 存储过程,存储函数,触发器和事件是自从...

  • MySQL(Mariadb)总结2 - SQL知识点汇总

    开发DBA:数据库设计(E-R关系图)、SQL开发、内置函数、存储例程(存储过程和存储函数)、触发器、事件调度器(...

网友评论

    本文标题:mysql 触发器 函数 存储过程之(函数)

    本文链接:https://www.haomeiwen.com/subject/cnnmjttx.html