Search code examples
mysqlstored-proceduresif-statementnavicat

MySQL - Syntax Error in Stored Procedure using `if`


I need to know what is the error in the following stored procedure, as begging with mySql I can't understand what is the error

if not EXISTS( select filesrefrences.ReferenceID  from filesrefrences where filesrefrences.RefrenceKey= pRefrenceKey)
BEGIN
        Insert into filesrefrences                      
                            (                   
                                    filesrefrences.RefrenceKey,
                                    filesrefrences.RefrenceCount
                            )
                        VALUES
                         (                      
                                    pRefrenceKey,
                                    1
                         );
        select LAST_INSERT_ID();
        END
ELSE
BEGIN
        UPDATE filesrefrences
        set filesrefrences.RefrenceCount= filesrefrences.RefrenceCount+1
        WHERE filesrefrences.ReferenceID= ExistedReferenceID;
        SELECT ExistedReferenceID;
    END

it gives error in line no# 4


Solution

  • You have not used THEN keyword and END IF.

    Try this:

    SET @ExistedRefID = NULL;
    SELECT ReferenceID INTO @ExistedRefID 
    FROM filesrefrences 
    WHERE RefrenceKey= pRefrenceKey;
    
    IF (@ExistedRefID IS NULL) THEN 
        INSERT INTO filesrefrences(RefrenceKey, RefrenceCount)
        VALUES(pRefrenceKey,1);
        SELECT LAST_INSERT_ID();
    ELSE
        UPDATE filesrefrences
        SET RefrenceCount= RefrenceCount+1
        WHERE ReferenceID= @ExistedRefID;
        SELECT @ExistedRefID;
    END IF;