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楼的方法,就出现这个东西。是不是数据库版本问题?
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具有函数的功能而创建并保留的关键字。
CREATE FUNCTION Test_Fun (VAL CHAR(20)) RETURNS INT RETURN (SELECT COUNT(*) FROM tb where value=VAL)SELECT Test_Fun('abc')
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语法错误,请看看问题在那里
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;//
-> 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)
http://dev.mysql.com/doc/refman/5.1/zh/stored-procedures.html#create-procedure
http://dev.mysql.com/doc/refman/5.1/zh/stored-procedures.html#create-procedure
这是什么意思呢?我直接运行2楼的方法,就出现这个东西。是不是数据库版本问题?
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具有函数的功能而创建并保留的关键字。
RETURNS INT
RETURN (SELECT COUNT(*) FROM tb where value=VAL)SELECT Test_Fun('abc')
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语法错误,请看看问题在那里
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;//