[原創]Mysql自定義函數

By JiangMiao 2006-10-19 [原創]
 
Mysql自定義函數分爲兩種
1. 簡單的 如string相關的函數
2. 集合的 aggregate,如sum函數
創建函數的Mysql命令
CREATE [AGGREGATE] 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 C++

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

如果有建議或疑問歡迎留言

 
發佈了20 篇原創文章 · 獲贊 0 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章