2014-11-22 55 views
-2

我不断收到一个SQL查询用下面的查询:找不到我的错误在创建MySQL中的功能

CREATE FUNCTION qualCand(salary int, gpa decimal(5,3), city varchar(255), state char(2)) returns VARCHAR(255) 

DECLARE r VARCHAR(255) 

SET r = (SELECT ca.firstname, ca.lastname, ca.phone, ca.email 
    FROM Candidates ca 
    JOIN education e 
    ON ca.candID = e.candID 
    JOIN desiredPos dPos 
    ON ca.candID = dPos.candID 
    JOIN desiredLocation dLoc 
    ON ca.candID = dloc.candID 
    WHERE dPos.desiredSalary >= salary AND 
    dLoc.sity = city AND 
    dLoc.state = state AND 
    e.GPA >= gpa); 

MySQL表示:

#1064 - 你有一个错误你的SQL语法;检查与您的MySQL服务器版本相对应的手册,以找到正确的语法,用于'DECLARE r VARCHAR(255)

SET r =(在第3行选择ca.firstname,ca.lastname,ca.phone,c'

回答

1

有几件事情不对的例子。

首先,您声明r是一个VARCHAR,但您要指定设置为它的结果。

其次,将一个变量设置为来自SELECT查询的列值,语法会是这样:

SELECT @r = firstname FROM Table ...

下面是MySQL文档的链接,以帮助您更好地了解不同的语法规则,你正在尝试做的事:http://dev.mysql.com/doc/refman/5.7/en/user-variables.html