2016-06-05 8 views
0

Ich habe gerade versucht, die IF-ELSE with SELECT von mySQL zu verwenden. Ich weiß, dass hier ein Syntaxfehler vorliegt, kann ihn aber nicht finden. Es gibt Error Code 1241. Operand should contain 1 column(s) auf mySQL Workbench zurück.MySQL Fehlercode 1241

Ich sehe keinen Fehler oder vielleicht kann ich es einfach nicht finden. Was könnte das verursachen?

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 

Ich würde jede Hilfe schätzen, da ich neu in der Sprache bin. Ich habe gerade angefangen, Transaction and Procedures zu lernen.

Danke.

Antwort

0

Ok , so muss ich 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) 

ich weiß nicht nur hinzufügen, wie MERGE funktioniert so denke ich, werde ich mehr lesen.

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

macht keinen Sinn; es erwartet nur eine Spalte für das if zu testen.

Vielleicht möchten Sie IF (SELECT COUNT(*) FROM ...)

1

Ich glaube, Sie suchen IF vorhanden ist, aber es gibt eine Reihe von Möglichkeiten, von upserting (UPdatinSERT) unter Verwendung von IF und Zusammenführen, viele von ihnen in SO :)

+0

Danke für den Tipp. – p3ace