1

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);

私は自分が間違っていることを見つけることができないようです。誰か助けてください。

4

1 に答える 1

0

これはうまくいくはずです:

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 ;

最初の例では、「グローバル」変数 (「@」記号で始まる変数) を使用しています。2 番目の例では、「ローカル」変数を使用しています。

于 2012-10-23T22:28:05.567 に答える