2013-06-28 2 views
1

MySQL 함수를 사용하기 시작했습니다. 아래 함수를 빌드 할 때 오류가 발생합니다.MySQL 함수를 빌드 할 때 오류 1064가 발생하지 않습니다.

-> DELIMITER // 
-> CREATE FUNCTION addD(d VARCHAR(20), rt VARCHAR(40), a VARCHAR(5), de VARCHAR(35))                       
-> RETURNS VARCHAR(20) 
-> BEGIN 
->  DECLARE ret VARCHAR(20); 
->  IF (SELECT count(DN) FROM DB.TABLE WHERE DN = d) > 0 THEN ret=concat(s,' - exists!'); 
->  ELSE ret = 'clear'; 
->  IF ret = 'clear' THEN (INSERT INTO DB.TABLE (DN,ROUTE,ACTIVE,Description) VALUES (dn,rt,a,de)); 
->  RETURN ret; 
-> END // 

내가 오류는 다음과 같습니다

ERROR 1064 (42000) : 당신은 당신의 SQL 구문에 오류가 있습니다; 오른쪽 구문이 = 'CONCAT (dn,'- exist! ') 근처에서 사용되도록 MySQL 서버 버전에 해당하는 설명서를 확인하십시오. ELSE ret = 'clear'; 라인 1

에서 RET = '명확한'THEN ('IN이 어떤 도움이 좋을 것 경우.

답변

2

귀하의 IF 구문이 올바르지 않습니다. 내가 MySQL의 기능에 새로운 오전으로 부드럽게 당신이 필요하세요 변수에 값을 할당 SET 또는 SELECT를 사용합니다.

DELIMITER // 
CREATE FUNCTION addD(d VARCHAR(20), rt VARCHAR(40), a VARCHAR(5), de VARCHAR(35))                       
RETURNS VARCHAR(20) 
BEGIN 
    DECLARE ret VARCHAR(20); 

    IF (SELECT count(DN) FROM DB.TABLE WHERE DN = d) > 0 THEN 
     SET ret = CONCAT(s,' - exists!'); 
    ELSE 
     SET ret = 'clear'; 
    END IF; 

    IF ret = 'clear' THEN 
     INSERT INTO DB.TABLE (DN,ROUTE,ACTIVE,Description) VALUES (dn,rt,a,de); 
    END IF; 

    RETURN ret; 
END // 

을한다는 성명을

SET ret = CONCAT(s,' - exists!'); 
       ^

존재하지 않는 변수 s으로 연결하려고합니다.

또한 저장된 함수가 아니라 저장 프로 시저의 작업 인 것처럼 보입니다.

+0

gotcha. 정말 고맙습니다! 차이점을 읽고 나서 올바른 MySQL 항목을 확인해야합니다. – jcsbrotha