数据库---创建函数,存储函数,触发器实例

Posted 樊琇鸿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库---创建函数,存储函数,触发器实例相关的知识,希望对你有一定的参考价值。

1、创建函数

create function getPingfanghe(x float, y float)
returns float
begin
    #此函数体范围内,就是所谓的“编程环境”

    set @result = x*x + y*y; #“定义”会话变量并赋值
    return @result;
end;
create function getPingfanghe2(x float, y float)
returns float
begin
    #此函数体范围内,就是所谓的“编程环境”
    #此范围就可以使用普通变量,已经各种流程控制结构
    declare result float default 0;    #定义普通变量并设定初值
    set result = x*x + y*y;
    return result;
end;

2、创建过程:

//此存储过程意图用于传入两个数据并将该两个数据插入表enum_test中。

create procedure  pro1 (n int, xuanxiang varchar(20) )
begin
    insert into enum_test (id, xuanxiang)values(n, xuanxiang);
end;

3、具有out作用的存储过程

create procedure getXiebian( z1 float, z2 float, out xiebian float)
begin
    set @pingfanghe = getPingfanghe(z1, z2);#调用函数去计算平方和
    set xiebian = pow(@pingfanghe, 0.5);
end;
//该存储过程调用的时候,第3个参数必须是一个变量

4、使用select的存储过程

create procedure  gettables()
begin
    select * from enum_test;
    select * from set_test;
    select * from tab5;
end; 

5、定义一个触发器,让该触发器可以在tab5插入数据的时候,
自动将其实不部分数据插入另一个表中以供“外方合作单位”使用。
①tab5的字段为:id, f1, f2, f4, id2;
②要插入的另一个表的字段为:id, f1, f2

技术分享图片
create trigger getSubData  after insert on tab5 for  each  row 
begin
    #set @id = new.id;    #new在触发器中是特定关键字,
                        #代表“刚刚插入的数据行”,这里代表其中的该行数据的id值
    #set @v1 = new.f1;    #新插入数据的f1字段的值
    #set @v2 = new.f2;    #新插入数据的f1字段的值
    insert into tab5_sub (f1, f2)values(new.f1,new.f2);
end;



以上是关于数据库---创建函数,存储函数,触发器实例的主要内容,如果未能解决你的问题,请参考以下文章

创建片段而不从 java 代码实例化它

为函数的每个实例创建唯一的存储值

mysql的 视图触发器事务存储过程函数索引与慢查询优化

错误代码:1442。无法更新存储函数/触发器中的表“客户”,因为它已被调用此存储函数的语句使用

MySQL高级存储过程/函数/触发器

如何导出存储过程函数包和触发器的定义语句?如何导出表和索引的创建语句?