2016-06-05 2 views
0

방금 ​​mySQL의 IF-ELSE with SELECT을 사용하려고했습니다. 여기에 구문 오류가 있지만 찾을 수 없다는 것을 알고 있습니다. mySQL Workbench에서 Error Code 1241. Operand should contain 1 column(s)을 리턴합니다.MySQL 오류 코드 1241

나는 어떤 오류도 표시되지 않으며 그냥 찾을 수 없습니다. 무엇이 이것을 일으킬 수 있습니까?

CREATE DEFINER=`root`@`localhost` PROCEDURE `addCurriculum`( 
    IN p_curcName varchar(100), 
    IN p_description TEXT, 
    IN p_yearLevel VARCHAR(50), 
    IN p_syStart INT, 
    IN p_syEnd INT, 
    IN p_creator VARCHAR(50)   ) 
BEGIN 
    IF 
     (SELECT name,description,yearLevel,syStart,syEnd 
     FROM curriculum 
     WHERE 
      name  =  p_curcName 
     AND description =  p_description 
     AND yearLevel =  p_yearLevel 
     AND syStart  =  p_syStart 
     AND syEnd  =  p_syEnd 
     AND creator  =  p_creator) 

    THEN -- 

    BEGIN 
     SELECT 'Curriculum you are trying to add already exists'; 
    END; 

     ELSE 

      BEGIN 
       INSERT INTO curriculum(name, description, yearLevel, syStart, syEnd, creator) 
       VALUES(p_curcName,p_description,p_yearLevel,p_syStart,p_syEnd,p_creator); 
      END; 

    END IF; 

END 

나는 언어를 처음 사용하기 때문에 도움을 주셔서 감사합니다. 방금 Transaction and Procedures를 배우기 시작했습니다.

감사합니다.

답변

0

좋아 IF (SELECT COUNT(*) FROM ...)

0
IF 
     (SELECT name,description,yearLevel,syStart,syEnd 

; 테스트 할 if에 대해 하나의 열만 있으면됩니다.

은 아마 당신은 당신이 IF 존재를 찾고 있습니다 생각하지만, 거기에 IF를 사용 upserting의 방법 (UPdatinSERT)의 수이며, 병합, 그들 중 많은에서 SO :

1

을 원하는 그래서 난 그냥 MERGE 그렇게 작동 내가 더 읽어야 겠네요 방법을 모르는 EXISTS

IF EXISTS 
     (SELECT name,description,yearLevel,syStart,syEnd 
     FROM curriculum 
     WHERE 
      name  =  p_curcName 
     AND description =  p_description 
     AND yearLevel =  p_yearLevel 
     AND syStart  =  p_syStart 
     AND syEnd  =  p_syEnd 
     AND creator  =  p_creator) 

추가해야합니다.

+0

팁 주셔서 감사합니다. – p3ace

관련 문제