mysql 一个很简单的函数, create failed.

akun 2006-06-27 01:10:44

CREATE FUNCTION testfunc1 (parain INT)
RETURNS INT
BEGIN
DECLARE ttt INT;
SET ttt=12;

RETURN ttt+parain;
END



哪里有错啊?
...全文
438 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
kb 2006-07-11
  • 打赏
  • 举报
回复
我这里可以的。不知道你用的是什么版本,具体是什么错误。
我的5。0。16 for windowxp


mysql> CREATE FUNCTION testfunc1 (parain INT)
-> RETURNS INT
-> BEGIN
-> DECLARE ttt INT;
-> SET ttt=12;
->
-> RETURN ttt+parain;
-> END//
Query OK, 0 rows affected (0.00 sec)

mysql>
aniude 2006-07-11
  • 打赏
  • 举报
回复
CREATE FUNCTION testfunc1(parain INT)
RETURNS INT
BEGIN
DECLARE ttt INT;
SET ttt=12;
RETURN ttt+parain;
End
happia 2006-07-07
  • 打赏
  • 举报
回复
先改mode,再加上那段话,
akun 2006-07-05
  • 打赏
  • 举报
回复
HELP....csdn应该是卧虎藏龙,高手云集的啊?

人哪?
akun 2006-06-28
  • 打赏
  • 举报
回复
CREATE FUNCTION testfunc1 (parain INT)
RETURNS INT
BEGIN
DECLARE ttt INT;
SET ttt=12;

RETURN ttt+parain;
END

提示的是语法错误. 楼上的一大段文字对我也没有作用啊.
anybody help me,....帮帮看看哪里错误啊...
eqxu 2006-06-27
  • 打赏
  • 举报
回复
14.1.4 编译并安装用户定义函数
实现UDF的文件必须在服务器运行的主机上被编译并且安装。这个过程下面描述,UDF例子文件包含在MySQL源代码分发的“udf_example.cc”中,这个文件包含下列函数:

metaphon()返回字符串参数的一个变音位(metaphon)字符串。这有点象一个soundex字符串,但是它更针对英语音调。
myfunc_double()返回在其参数中所有字符的ASCII值的和,除以其参数长度之和。
myfunc_int()返回其参数长度之和。
lookup()返回对主机名的IP数。
reverse_lookup()返回对一个IP数的主机名。函数可以以一个字符串"xxx.xxx.xxx.xxx"或4位数字被调用。
一个可动态装载的文件应该编译为一个共享的对象文件,使用象这样的命令:

shell> gcc -shared -o udf_example.so myfunc.cc

通过运行在你的MySQL源代码树的“sql”目录下的下列命令,你能很容易地找出对你的系统正确的编译器选项:

shell> make udf_example.o

你应该运行一个类似于make显示的编译命令,除了你应该删除接近行结尾的-c选项并且在行最后增加-o udf_example.so。(在一些系统上,你可能需要在命令上保留-c。)

一旦你编译了包含UDF 的一个共享对象,你必须安装它并且把它告诉MySQL。自“udf_example.cc”编译一个共享对象产生一个名字类似“udf_example.so”的文件(准确的名字可以依平台不同而不同)。拷贝这个文件到被某个ld寻找的目录,例如“/usr/lib”。在许多系统上,你能设定LD_LIBRARY或LD_LIBRARY_PATH环境变量,指向有UDF函数文件的目录。dopen手册页告诉你你应该在你的系统上使用哪个变量。你应该在mysql.server或safe_mysqld中设置它并且重启mysqld。

在库被安装以后,用这些命令通知mysqld有关新的函数的信息:

mysql> CREATE FUNCTION metaphon RETURNS STRING SONAME "udf_example.so";
mysql> CREATE FUNCTION myfunc_double RETURNS REAL SONAME "udf_example.so";
mysql> CREATE FUNCTION myfunc_int RETURNS INTEGER SONAME "udf_example.so";
mysql> CREATE FUNCTION lookup RETURNS STRING SONAME "udf_example.so";
mysql> CREATE FUNCTION reverse_lookup RETURNS STRING SONAME "udf_example.so";

函数可使用DROP FUNCTION删除:

mysql> DROP FUNCTION metaphon;
mysql> DROP FUNCTION myfunc_double;
mysql> DROP FUNCTION myfunc_int;
mysql> DROP FUNCTION lookup;
mysql> DROP FUNCTION reverse_lookup;

CREATE FUNCTION和DROP FUNCTION语句在mysql数据库中更新系统表func。函数名、类型和共享库名被保存在该表中。你必须有对mysql的insert和delete权限以创建和抛弃函数。

你不应该使用CREATE FUNCTION增加一个已经被创建的函数。如果你需要重新安装函数,你应该用DROP FUNCTION删除它,然后用CREATE FUNCTION重新安装它。你将需要这样做,例如,如果你重新编译你的函数的一个新版本,以便mysqld获得新版本,否则服务器将继续使用旧版本。

活跃函数在每次服务器启动时再次装载,除非你使用--skip-grant-tables选项启动mysqld。在这种情况下,UDF初始化被跳过并且UDF不可用。(活跃函数是一个用CREATE FUNCTION装载并且没有用DROP FUNCTION删除的函数。)

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧