网站首页 > 文章中心 > 其它

mysql怎么新建函数

作者:小编 更新时间:2023-09-20 11:46:16 浏览量:451人看过

Mysql 创建自定义函数

在使用mysql的过程中,mysql自带的函数可能不能完成我们的业务需求,这时就需要自定义函数,

函数包括数学函数、字符串函数、日期和时间函数、条件判断函数、系统信息函数、加密函数、格式化函数等.通过这些函数,可以简化用户的操作.

在MySQL——函数的使用方法与MySQL内部函数的使用方法一样.

第五段:MYSQL存储过程和函数

create procedure用来创建 存储过程 ,create function用来创建 函数

Delimiter命令是改变语句的结束符 ,MySQL默认的结束符为;号,由于procedure和function中的;号并不代表创建的结束,所以要替换成另外的结束符以便表示创建的结束

rontine_body子句可以包含一个简单的SQL语句,也可以包含多个SQL语句, 通过begin...end将这多个SQL语句 包含在一起

MySQL存储过程和函数中也可以包含类似create和drop等DDL语句

comment子句用来写入对存储过程和函数的注释

Language子句用来表示此存储过程和函数的创建语言

存储过程和函数被标注为deterministic表明当输入相同的参数是会返回相同的结果,反之如果是not deterministic则表示相同参数不会是相同结果,默认是not deterministic

相关属性短语只有咨询含义,并不是强制性的约束

Drop procedure/function语句用来 删除指定名称的存储过程或函数

Begin...end语句通常出现在存储过程、函数和触发器中,其中 可以包含一个或多个语句 ,每个语句用;号隔开

标签label可以加在begin...end语句以及loop, repeat和while语句

语句中通过iterate和leave来控制流程,iterate表示返回指定标签位置,leave表示跳出标签

Declare语句通常用来声明本地变量、游标、条件或者handler

Declare语句只允许出现在begin ... end语句中而且必须出现在第一行

Declare的顺序也有要求,通常是先声明本地变量,再是游标,然后是条件和handler

本地变量可以通过declare语句进行声明

声明后的变量可以通过select ... into var_list进行赋值,或者通过set语句赋值,或者通过定义游标并使用fetch ... into var_list赋值

通过declare声明变量方法:

MySQL支持if,case,iterate,leave,loop,while,repeat语句作为存储过程和函数中的 流程控制语句 ,另外return语句也是函数中的特定流程控制语句

Case语句在存储过程或函数中表明了 复杂的条件选择语句

IF语句在存储过程或函数中表明了 基础的条件选择语句

其中在 function 里面,只有 DETERMINISTIC, NO SQL 和 READS SQL DATA 被支持.如果我们开启了 bin-log, 我们就必须为我们的 function 指定一个参数.

在 MySQL 中创建函数时出现这种错误的解决方法:

set global log_bin_trust_function_creators=TRUE;

Iterate语句 仅出现在loop,repeat,while循环语句中,其含义表示重新开始此循环

Leave语句表明 退出指定标签的流程控制语句块

通常会用在begin...end,以及loop,repeat,while的循环语句中

Loop语句是存储过程或函数中表达 循环执行 的一种方式

repeat语句是存储过程或函数中表达 循环执行 的一种方式

while语句是存储过程或函数中表达 循环执行 的一种方式

Return语句用在 函数中,用来终结函数的执行并将指定值返回给调用者

Cursor游标用来 声明一个数据集

游标的声明必须在变量和条件声明之后,在handler声明之前

Cursor close语句用来 关闭之前打开的游标

Cursor declare语句用来声明一个游标和指定游标对应的数据集合, 通常数据集合是一个select语句

Cursor fetch语句用来获取游标指定数据集的 下一行数据 并将各个字段值赋予后面的变量

Open cursor语句用来打开一个之前已经 声明好的游标

Declare condition语句命名 特定的错误条件 ,而该特定错误可以在declare...handler中指定 处理方法

个错误做特殊处理,可以用三种方法:

Declare handler语句用来声明一个handler来处理一个或多个特殊条件,当其中的某个条件满足时则触发其中的statement语句执行

Statement可以是一个简单SQL语句,也可以是begin...end组成的多个语句

Handler_action子句声明当执行完statement语句之后应该怎么办

Condition_value的值有以下几种:

当condition发生但没有声明handler时,则存储过程和函数依照如下规则处理

create trigger语句用来创建一个触发器,触发器的作用是当表上有对应SQL语句发生时,则触发执行

触发器创建时需要 指定对应的表名 tbl_name

Definer关键词用来指定trigger的安全环境

Trigger_time指定触发器的执行时间,BEFORE和AFTER指定触发器在表中的 每行数据修改前或者后 执行

Trigger_event指定触发该触发器的具体 事件

INSERT当新的一行数据插入表中时触发,比如通过执行insert,load data,replace语句插入新数据

UPDATE当表的一行数据被修改时触发,比如执行update语句时

DELETE当表的一行数据被删除时触发,比如执行delete,replace语句时

当执行insert into ... on duplicate key update语句时,当碰到重复行执行update时,则触发update下的触发器

Trigger_body表示触发器触发之后要执行的一个或多个语句,在内部可以引用涉及表的字段, OLD.col_name表示行数据被修改或删除之前的字段数据,NEW.col_name表示行数据被插入或修改之后的字段数据

Drop trigger语句用来 删除一个触发器

If exists短语用来避免删除不存在的触发器时引发报错

当你执行drop table时,表上的触发器也被drop掉了

mysql如何创建自定义存储函数?

①. returns char ?应该renturn int吧.

mysql创建一个函数

DELIMITER $$

CREATE FUNCTION ◆ChkInsert◆(in_pk int) returns int

begin

declare _count int;

declare _returnValue int;

set _count = 0;

select count(列1) into _count from 你的表 where 列1 = in_pk;

if _count 0 then

else

insert into 你的表 ( 列1 ) values ( in_pk );

set _returnValue = 0;

end if;

return _returnValue;

end $$

怎样用MySQL创建function

以上就是土嘎嘎小编为大家整理的mysql怎么新建函数相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章