我想自己创建function,怎么都执行不了。原来在ORACLE下写的怎么改都不行。请各位高手能给我一个能执行成功的例子,让我学习一下基本写法。谢谢了~~
后来我从百度上搜索了一个中文手册create function hello return varchar(50) 
return concat('Hello!');会报如下错误。Error Code : 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'return varchar(50) 
return concat('Hello!')' at line 1
(0 ms taken)

解决方案 »

  1.   

    mySQL版本5以上。
    以下摘自 MySQL 5.1 Reference Manualmysql> CREATE FUNCTION hello (s CHAR(20)) RETURNS CHAR(50)
        -> RETURN CONCAT('Hello, ',s,'!');
    Query OK, 0 rows affected (0.00 sec)mysql> SELECT hello('world');
    +----------------+
    | hello('world') |
    +----------------+
    | Hello, world!  |
    +----------------+
    1 row in set (0.00 sec)
        [align=center]====  ====
    [/align]
      

  2.   

    完整的
    set global log_bin_trust_function_creators = 1;
    DELIMITER $$DROP FUNCTION IF EXISTS `hello`$$CREATE DEFINER=`root`@`%` FUNCTION `hello`() RETURNS varchar(50) CHARSET utf8
    begin
    return concat('Hello!');
    end$$DELIMITER ;
      

  3.   

    -- 如果创建函数出现错误(Error Code : 1418),要先调用
    SET GLOBAL log_bin_trust_function_creators = 1;
      

  4.   

    不知道为什么就是不行~~  也无奈了~~  可能跟工具有关系吧~~  我还不太会在linux下用MYSQL的命令行~~  我把数据库函数都写在页面里了~~  总体感觉麻烦了不少`~ 不知道对不对~~ 而且就第一次的开发经验来讲~~  MYSQL跟ORACLE差的还真不是一星半点~~  自己不在专业的开发公司~~ 水平有限啊~~  结分晚了~~  希望大家谅解~~ 还希望哪位大侠能帮我解决~~  我个人认为是需要回到命令行敲的~~ 不知道是不是
      

  5.   

    看看下面这个例子吧。create function sum_Num6(a int(4),b int(4) ) returns int(10)

    begin
    DECLARE c INT(10) default 0;
    set c=a+b;
    return c;
    end定义返回类型是 returns  , 而不是  return 。