• MySql学习笔记——存储函数


    在学习完存储过程后,今天主要回顾一下mysql中的存储函数的知识。

    函数与存储过程的区别

    首先,存储函数也是过程式对象之一,与存储过程相似。它们都是由SQL和过程式语句组成的代码片断,并且可以从应用程序和SQL中调用。
    区别:
    1.存储函数不能拥有输出参数,因为存储函数本身就是输出参数;
    2.不能用CALL语句来调用存储函数;
    3.存储函数必须包含一条RETURN语句,而这条特殊的SQL语句不允许包含于存储过程中。

    存储函数的创建

    创建存储函数使用CREATE FUNCTION语句。查看数据库中的存储函数,可以使用SHOW FUNCTION STATUS命令。
    创建存储函数的语法为:

     CREATE FUNCTION sp_name ([func_parameter[,....]])
       RETURN type
       [characteristic...] routine_body
    

    说明:存储函数的定义格式和存储过程相关不大。

    • sp_name是存储函数的名称。存储函数不能拥有与存储过程相同的名字。
    • func_parameter是存储函数的参数,参数只有名称和类型,不能指定IN,OUT和INOUT。RETURN type子句声明函数返回值的数据类型。
    • routine_body是存储函数的主体,也叫存储函数数体。

    例子:

    delimiter $$
    create function ss(ac char(6))
    returns char(8)
    begin 
     return (select username from user where id=ac);
    end $$
    delimiter ;
    

    说明:RETURN子句中包含SELECT语句时,SELECT语句的返回结果只能是一行且只能有一列值。

    存储函数的调用、删除和修改

    调用

    调用函数用select 关键字。
    语法格式:

    SELECT sp_name ([func_parameter[,...]])
    

    例子:

    select ss('11');
    

    结果:

    删除

    语法格式:

    DROP FUNCTION [IF EXISTS] sp_name
    

    例子:

    drop function if exists ss;
    

    修改

    语法格式:

    ALTER FUNCTION sp_name [characteristic ...]
    

    说明:函数其实不能修改,只能先删除再重新定义。

    总结

    函数与存储过程很相似,理解起来就很容易了。

  • 相关阅读:
    safari兼容时间格式 NAN
    高阶组件
    SqlBulkCopy与触发器,批量插入表(存在则更新,不存在则插入)
    SQL Server 触发器
    浅谈数据库中的触发器
    SQL Server 2008 表变量参数(表值参数)用法
    SQL Server 批量插入数据的两种方法
    SQL Server 2008 R2 主从数据库同步
    C#操作FTP, FTPHelper和SFTPHelper
    orcherd 汉化
  • 原文地址:https://www.cnblogs.com/black-spike/p/7617188.html
Copyright © 2020-2023  润新知