簡體   English   中英

將變量的值設置為MySQL中SELECT語句的結果

[英]Set the value of a variable to the result from a SELECT statement in MySQL

我想在Mysql中創建以下函數,但未創建該函數,但由於錯誤而失敗

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 ;

第一個示例使用“全局”變量(以“ @”符號開頭的變量)。 第二個示例使用“本地”變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM