MYSQL数据库的基本操作八(存储函数)

一,存储函数的创建,调用,查看,修改,删除

1,创建存储函数

    drop function if exists func_name;     #如果存储函数存在,删除存储函数
    delimiter //                           #声明存储函数的结束符为//,可自定义
    create function func_name([func_parameter])
        returns type                       #函数返回的数据类型
        [characteristic ...]               #存储函数特性,创建时一般省略,默认系统设置
        begin                              #程序主体开始
                                       #中间可写逻辑,包括定义变量,变量赋值,定义条件及处理程序,定义光标及流程控制
        return  value;                     #存储函数可以通过 return 语句返回函数值,主要用于计算并返回一个值,可以是一个查询结果值
        end//                              #程序结束标识符

    delimiter;
    '''
    1, func_parameter    #指定存储函数的参数列表,如下:
        in | out | inout  param_name  type    #in,out,inout 输入输出,param_name 字段名  type 字段类型
        但是,存储函数默认为in,且参数不写in  没有out,inout 
    2, DELIMITER//和DELIMITER;两句, DELIMITER是分割符的意思,因为MySQL默认以";"为分隔 符,如果我们没有声明分割符,
        那么编译器会把存储函数当成SQL语句进行处理,则存储函数的编译过程会报错,所以要事先用DELIMITER关键字申明当 前段分隔符,
        这样MySQL才会将";"当做存储函数中的代码,不会执行这些代码,用完了之后要把分隔符还原。   
    3,存储函数的特性  characteristic:
        COMMENT 'string'       表示注释信息
        | LANGUAGE SQL           当前系统支持的语言为sql
        | [NOT] DETERMINISTIC    存储过程执行结果是否确定,DETERMINISTIC  确定,相同的输入会得到相同的输出 [NOT] DETERMINISTIC 不确定
        | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }  子程序使用的sql 语句的限制
        CONTAINS SQL:      子程序包含sql语句,但不包含读或写数据的语句 
        NO SQL:            子程序不包含sql语句
        READS SQL DATA:    子程序包含读数据的语句
        MODIFIES SQL DATA: 子程序包含写数据的语句
        | SQL SECURITY { DEFINER | INVOKER }  指明谁有权限执行存储函数  DEFINER 只有定义者才能执行  INVOKER 有权限的调用者可执行
    4,程序主体可以用begin开始,end结束,return返回
    '''
    #简单的例字
    drop function if exists id;
    delimiter //
    create function id(re_name varchar(20))
        returns  int(20)
        begin
            declare  itep int(20);                                                #定义变量
            declare not_found condition for 1146;                                 #定义条件
            declare exit handler for not_found set @info='no_such_table';         #定义处理程序
            select id into itep from sch where name =re_name;                     #变量赋值
            return itep;                                                          #返回
        end//
    delimiter;                                                                    #恢复结束符

2,调用存储函数
    select id('xiaojun');                #select 调用存储函数的关键字   add_id   存储函数名称
    '''
    注意事项:
    1)存储函数名称后面必须加括号&#
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值