• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • CREATE FUNCTION用户定义函数

    CREATE [AGGREGATE] FUNCTION function_name
        RETURNS {STRING|INTEGER|REAL|DECIMAL}
        SONAME shared_library_name
    

    用户定义函数(UDF)是一种使用新函数扩展MySQL的方法,该新函数的工作方式类似于本机(内置)MySQL函数,例如ABS()CONCAT()

    function_name是在SQL语句中调用该函数应使用的名称。该RETURNS子句指示函数的返回值的类型。DECIMAL在之后是合法值RETURNS,但当前DECIMAL函数返回字符串值,应像STRING函数一样编写。

    shared_library_name是包含实现该功能的代码的共享库文件的基本名称。该文件必须位于插件目录中。该目录由plugin_dir系统变量的值给出。有关更多信息,请参见“添加用户定义的功能”。

    要创建功能,您必须具有系统架构的INSERT特权mysql。这是必需的,因为CREATE FUNCTION会在mysql.func系统表中添加一行记录功能名称,类型和共享库名称的行。

    CREATE FUNCTION性能架构user_defined_functions表中列出了使用进行注册的UDF 。请参见“ user_defined_functions表”。

    活动函数是已加载但CREATE FUNCTION未被删除的函数DROP FUNCTION。每次服务器启动时都会重新加载所有活动功能,除非您使用该选项启动mysqld--skip-grant-tables。在这种情况下,将跳过UDF初始化,并且UDF不可用。

    有关编写用户定义函数的说明,请参见“添加用户定义的功能”。为了使UDF机制起作用,必须使用C或C ++(或可以使用C调用约定的另一种语言)编写函数,您的操作系统必须支持动态加载,并且必须动态(而非静态)编译mysqld

    一个AGGREGATE函数的工作原理完全像一个本地的MySQL骨料(摘要)功能,如SUMCOUNT()

    注意

    要升级与UDF相关联的共享库,请发出一条DROP FUNCTION语句,升级共享库,然后发出一条CREATE FUNCTION语句。如果先升级共享库然后使用DROP FUNCTION,则服务器可能会崩溃。