创建mysql函数时出现语法错误

时间:2015-08-18 08:31:14

标签: mysql

mysqlfile.sql

DROP FUNCTION IF EXISTS func1;
DELIMITER //
CREATE FUNCTION func1(N INT) RETURNS INT
BEGIN
  RETURN (
      select * from Employee;
  );
END//
DELIMITER ;

执行source mysqlfile.sql,收到错误:

ERROR 1064 (42000): 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 ';
  );
END' at line 4

我应该如何修改代码?

4 个答案:

答案 0 :(得分:1)

你在END之后错过了一个分号,在选择之后有一个额外的分号

DROP FUNCTION IF EXISTS func1;
DELIMITER //
CREATE FUNCTION func1(N INT) RETURNS INT
BEGIN
  RETURN (
      select * from Employee
  );
END;//
DELIMITER ;

答案 1 :(得分:1)

一个函数返回1个值,我可以看到你想要返回一个数据集。 您必须创建程序才能获得所需。

 DELIMITER //
 CREATE PROCEDURE getEmployees()
 BEGIN
  SELECT *  FROM employee;
 END //
 DELIMITER ;

您可以通过call getEmployees();

来调用它

答案 2 :(得分:0)

你在BEGIN之前错过了'AS'

答案 3 :(得分:0)

TRY:

DROP FUNCTION IF EXISTS func1;
CREATE FUNCTION func1(N INT) RETURNS INT
BEGIN
DECLARE select_var VARCHAR;
SET select_var = (SELECT * FROM Employee);
RETURN VARCHAR(255);
END$$

希望它能解决你的问题