文章导航PC6首页软件下载单机游戏安卓资源苹果资源

pc软件新闻网络操作系统办公工具编程服务器软件评测

安卓新闻资讯应用教程刷机教程安卓游戏攻略tv资讯深度阅读综合安卓评测

苹果ios资讯苹果手机越狱备份教程美化教程ios软件教程mac教程

单机游戏角色扮演即时战略动作射击棋牌游戏体育竞技模拟经营其它游戏游戏工具

网游cf活动dnf活动lol周免英雄lol礼包

手游最新动态手游评测手游活动新游预告手游问答

您的位置:首页技术开发数据库技巧 → Windows上的MySQL UDF开发

Windows上的MySQL UDF开发

时间:2004/12/2 1:32:00来源:本站整理作者:蓝点我要评论(0)

曾以为Windows版本的MySQL存在不能使用UDF的BUG诸提交了一个bug报告。不过
似乎发现是我搞错了,MySQL的技术支持人员给了非常完美的解答,同大家分享
一下。下边是原文回复 :)


Sorry this isn't a bug.
Below I pasted a sample I did sometime ago for another user:


Ok. Assuming you have VC++ and the source distribution and a server
running,
I will create a UDF that returns a name:


Note: the sample is ugly, but the purpose here is to show you how
to handle the UDF.


- Open the mysqld.dsw workspace.
- Add New project to the workspace
- Project name: my_udf
- Select Win32 Dynamic-Link Library
- Click OK
- Select An Empty DLL project
- Click Finish
- Click OK
- Add a new file called my_udf.cpp to the project:


#include
#include
#include


extern "C" {
char *my_name(UDF_INIT *initid, UDF_ARGS *args, char *is_null,
       char *error);
}


char *my_name(UDF_INIT *initid, UDF_ARGS *args, char *is_null,
       char *error)
{
    char * me = "my name";


    return me;
}


- Type Ctrl+N for to create a new file.
- Select text type
- File name: my_udf.def
- Edit the above file with the below contents:
LIBRARY         UDF_EXAMPLE
DESCRIPTION             'Example Using UDF with VC++'
VERSION         1.0
EXPORTS
        my_name


- Right Click the my_udf project and select Settings
- Click the C/C++ tab
- Select General in the Category Combo
- Add the macro HAVE_DLOPEN to the PreProcessor definition
- Select Preprocessor in the Category Combo
- Add the include path to the text box: Additional Include directories
  e.g: ../include
- Press F7 for to build the DLL.


- Copy the my_udf.dll to the environment path directory:
  \winnt\system32 for example.


- Start the mysql client and issue:


C:\mysql-udf\bin>mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2 to server version: 3.23.52-max-nt


Type 'help;' or '\h' for help. Type '\c' to clear the buffer.


mysql> CREATE FUNCTION my_name RETURNS STRING SONAME "my_udf.dll";
Query OK, 0 rows affected (0.08 sec)


mysql> select my_name();


mysql> drop function my_name;
Query OK, 0 rows affected (0.00 sec)


画蛇添足的作下简要中文说明。


抱歉,这并不是一个bug。下面我粘贴一个以前为某个客户做的简例,假设你有了
VC++,源码分发,并且有一个正常运行的MySQL服务器


我将创建一个UDF它将一个名字:
注意:例子非常简陋,目的是让你了解该如何处理手头的UDF。


- 打开 mysqld.dsw 工作区。
- 添加新项目到这个工作区
- Project name: my_udf            // 项目名称:my_udf
- 选择 Win32 Dynamic-Link Library // Win32动态连接库
- 点击 OK
- 选择 An Empty DLL project       // 一个空DLL项目
- 点击 Finish
- 点击 OK
- 添加新文件 my_udf.cpp 到项目中:
#include
#include
#include


extern "C" {
char *my_name(UDF_INIT *initid, UDF_ARGS *args, char *is_null,
       char *error);
// 兼容C
}


char *my_name(UDF_INIT *initid, UDF_ARGS *args, char *is_null,
       char *error)
{
    char * me = "my name";


    return me;
    // 调用此UDF将返回 my name
}
- 按 Ctrl+N 来创建一个新文件。
- 选择 text 类型
- File name: my_udf.def file://文件名:my_udf.def
- 按照下边的内容编辑文件。
LIBRARY         UDF_EXAMPLE
DESCRIPTION             'Example Using UDF with VC++'
VERSION         1.0
EXPORTS
        my_name


- 右击my_udf项目并选择Settings
- 点 C/C++ 选项卡
- 选择 General
- 添加宏 HAVE_DLOPE 到预处理器定义
- 选择 Preprocessor
- 添加头文件路径: Additional Include directories
  例如: ../include
- 按 F7 去编译成 DLL.


- 复制 my_udf.dll 到环境变量path定义过的目录
  比如 \winnt\system32 。


- 打开mysql客户端


C:\mysql-udf\bin>mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2 to server version: 3.23.52-max-nt


Type 'help;' or '\h' for help. Type '\c' to clear the buffer.


mysql> CREATE FUNCTION my_name RETURNS STRING SONAME "my_udf.dll";
Query OK, 0 rows affected (0.08 sec)


mysql> select my_name();


mysql> drop function my_name;
Query OK, 0 rows affected (0.00 sec)



ok!欢迎大家来MySQL板交流UDF设计经验!我的电子邮件HeartIcy@163.com
手机13706410308。同时,我们MySQL板准备开始系统化持续性翻译MySQL文档,
希望大家多多支持共同完成这一项目。


HeartIcy
2003年5月17日于中国济南


相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 mssql企业管理器不能打 Oracle PRKC-1002错误原因和解决方案SQL SERVER数据库日志清空图文教程win2003计算机改名后sql server 2005 本地复DB2错误信息码大全

人气排行 彻底解决mysql中文乱码的办法mysql数据库root密码忘记的修改方法SQL SERVER数据库日志清空图文教程.bak备份文件如何恢复Oracle PRKC-1002错误原因和解决方案Oracle错误代码大全如何将txt的文本数据导入SQL server 2005呢DB2错误信息码大全