如何在mqsql里面创建一个函数?

解决方案 »

  1.   

    mysql> delimiter //mysql> CREATE PROCEDURE simpleproc (OUT param1 INT)
        -> BEGIN
        ->   SELECT COUNT(*) INTO param1 FROM t;
        -> END;
        -> //
    Query OK, 0 rows affected (0.00 sec)mysql> delimiter ;mysql> CALL simpleproc(@a);
    Query OK, 0 rows affected (0.00 sec)mysql> SELECT @a;
    +------+
    | @a   |
    +------+
    | 3    |
    +------+
    1 row in set (0.00 sec)
      

  2.   

    mySQL官方文档。
    http://dev.mysql.com/doc/refman/5.1/zh/stored-procedures.html#create-procedure
      

  3.   

    mySQL官方文档
    http://dev.mysql.com/doc/refman/5.1/zh/stored-procedures.html#create-procedure
      

  4.   

    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 '' at line 3   
    这是什么意思呢?我直接运行2楼的方法,就出现这个东西。是不是数据库版本问题?
      

  5.   

    DELIMITER //
    DROP PROCEDURE IF EXISTS funcLearn//
    CREATE PROCEDURE funcLearn(IN varin INT,OUT varout CHAR(20))
    BEGIN
         SELECT name INTO varout FROM tabletest WHERE id=varin;
    END;
    //
    DELIMITER ;CALL funcLearn(1,@var);
    SELECT @var;这就是一个最基本的函数了,其实是存储过程,不是函数。
    函数要写成FUNCTION,不是PROCEDURE,函数是为了兼容以前的版本保留的功能,存储过程实现是目前mysql主推的方式。
    IN是指输入参数,而OUT是指输出结果参数。是两个关键字。
    大多存储过程不用OUT参数来返回结果,而是直接执行存储过程即可返回值,OUT是为了让PROCEDURE具有函数的功能而创建并保留的关键字。
      

  6.   

    CREATE  FUNCTION Test_Fun (VAL CHAR(20)) 
    RETURNS INT  
    RETURN (SELECT COUNT(*)  FROM tb where value=VAL)SELECT Test_Fun('abc')
      

  7.   


    create function timsize (a int,b varchar(100) )
    returns varchar(500)
    declare s varchar(500)
    select s=s+case when s<>'' then ',' else '' end +size from product where num=a and color=b
    return s语法错误,请看看问题在那里
      

  8.   

    delimiter //CREATE FUNCTION timsize (a INT,b VARCHAR(100)) RETURNS VARCHAR(500)
    BEGIN
    DECLARE s VARCHAR(500);
    select s+case when s<>'' then ',' else '' end +size into s from product where num=a and color=b;
    RETURN s;
    END;//