将变量的值设置为MySQL中SELECT语句的结果
我想在Mysql中创建以下函数,但是函数没有被创建,但是由于一个错误而失败将变量的值设置为MySQL中SELECT语句的结果,mysql,Mysql,我想在Mysql中创建以下函数,但是函数没有被创建,但是由于一个错误而失败 DELIMITER $$ CREATE FUNCTION MapAccountType(AccountTypeID INT) RETURNS VARCHAR(50) DETERMINISTIC BEGIN DECLARE @AccountType varchar(50); SELECT AccountType INTO @AccountType FROM AccountType
DELIMITER $$
CREATE FUNCTION MapAccountType(AccountTypeID INT)
RETURNS VARCHAR(50)
DETERMINISTIC
BEGIN
DECLARE @AccountType varchar(50);
SELECT AccountType INTO @AccountType
FROM AccountType
WHERE AccountTypeID = AccountTypeID);
RETURN AccountType;
END $$
DELIMITER ;
对我桌子的描述
CREATE TABLE AccountType(
AccountTypeID INT AUTO_INCREMENT PRIMARY KEY,
AccountType varchar(100) UNIQUE NOT NULL
);
我得到的错误是
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 '@AccountType varchar(50);
我似乎无法发现我做错了什么。有人能帮忙吗。这应该可以:
DELIMITER $$
CREATE FUNCTION MapAccountType(AccountTypeID INT)
RETURNS VARCHAR(50)
DETERMINISTIC
BEGIN
SELECT AccountType INTO @AccountType FROM AccountType
WHERE AccountTypeID = AccountTypeID;
RETURN @AccountType;
END $$
DELIMITER ;
这也将有助于:
DELIMITER $$
CREATE FUNCTION MapAccountType(AccountTypeID INT)
RETURNS VARCHAR(50)
DETERMINISTIC
BEGIN
DECLARE v_AccountType varchar(50) DEFAULT NULL;
SELECT AccountType INTO v_AccountType FROM AccountType
WHERE AccountTypeID = AccountTypeID;
RETURN v_AccountType;
END $$
DELIMITER ;
第一个示例使用“全局”变量(以“@”符号开头的变量)。第二个示例使用一个“局部”变量。您的函数不是严格确定的,因为为AccountTypeID返回的AccountType可以根据基础表进行更改。