2012-10-23 5 views
1

에 SELECT 문에서 결과 변수의 값을 설정하지만, 기능을 만들었지 만 오류내가 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); 

입니다 잘못하고있다. 누군가 제발 도와 줄 수 있어요.

+0

AccountTypeID에 대해 반환 된 AccountType이 기본 테이블을 기반으로 변경 될 수 있기 때문에 함수가 엄격하게 결정적이지 않습니다. – pilcrow

답변

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 ; 

첫번째 예는 "글로벌"변수 (이들에 '@'기호로 시작)를 사용한다. 두 번째 예제는 "local"변수를 사용합니다.

+0

감사합니다. 두 번째 예제가 효과가있었습니다. –

관련 문제