tongyi007 发表于 2018-9-29 11:34:39

Mysql自定义函数

Mysql自定义函数分为两种  1. 简单的 如string相关的函数
  2. 集合的 aggregate,如sum函数
  创建函数的Mysql命令
  CREATE FUNCTION 函数名称 RETURNS {STRING|INTEGER|REAL|DECIMAL}
  SONAME 链接库的名称
  笔记:
  1.链接库似乎不能带路径
  2.aggregate为集合
  类型
  描述
  STRING
  char *
  INTEGER
  64位int,__int64,unsigned __int64
  REAL
  double
  DECIAML
  还没完成,char*
  UDF_INIT:
  类型
  名称
  描述
  my_bool
  maybe_null
  1 如果返回NULL
  unsigned int
  decimals
  用在REAL函数
  unsigned long
  max_length
  用于STRING函数
  char *
  ptr
  函数数据的自由指针
  my_bool
  const_item
  0时参数无关
  UDF_ARGS:
  类型
  名称
  描述
  unsigned int
  arg_count
  参数个数
  enum Item_result *
  arg_type
  参数类型
  char **
  args
  参数
  unsigned long *
  lengths
  参数长度
  char *
  maybe_null
  当置1时,参数可以为NULL
  char **
  attributes
  属性
  unsigned long *
  attribute_lengths
  属性长度
  模板
  //For Mysql 5.0
  my_bool MyTest_init(UDF_INIT *initid, UDF_ARGS *args, char *message)
  {
  }
  void MyTest_deinit(UDF_INIT *initid)
  {
  }
  //以下为不同情况的函数
  longlong MyTest(UDF_INIT *initid, UDF_ARGS *args,char *is_null, char *error)
  {
  }
  double MyTest(UDF_INIT *initid, UDF_ARGS *args, char *is_null, char *error)
  {
  }
  char* MyTest(UDF_INIT *initid, UDF_ARGS *args,char *result, unsigned long *length,char *is_null, char *error)
  {
  }
  //END
  //以下用于集合
  void MyTest_clear(UDF_INIT *initid, char *is_null, char *error)
  {
  }
  void MyTest_add(UDF_INIT *initid, UDF_ARGS *args, char *is_null, char *error)
  {
  }
  //END

页: [1]
查看完整版本: Mysql自定义函数