2016-06-26 7 views
0
CREATE PROCEDURE `usp_GetUserValidation` 

(IN `@Username` VARCHAR(255), 
IN `@Password` VARCHAR(50), 
OUT `@ErrorCode` INT) 

    LANGUAGE SQL 
    NOT DETERMINISTIC 
    CONTAINS SQL 
    SQL SECURITY DEFINER 
    COMMENT 'To validate user login' 
BEGIN 

    IF EXISTS 
    (SELECT UserID 
     FROM mt_User 
     WHERE Username = `@Username` 
     AND Password = PASSWORD(`@Password`)) 

     BEGIN 
      SET `@ErrorCode` = 0; 
     END 

    ELSE 
     SET `@ErrorCode` = 1; 


    SELECT '@ErrorCode' AS res 
END 

Hallo Leute. Ich bin ein SQL Server-Benutzer. Kürzlich habe ich angefangen, etwas über MySQL und seine gespeicherten Prozeduren (Routinen) zu lernen. Kann jemand darauf hinweisen, was der Fehler ist, den ich gemacht habe, der den folgenden Fehler verursacht? Vielen Dank im Voraus Jungs :)MySQL - Stored Procedures Syntax Problem

1064 - 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 'BEGIN SET @ErrorCode = 0' at line 15

+1

Ich denke, zwischen Begin und Ende Sie eine tatsächliche Abfrage benötigen, nicht nur „was auch immer setzen“. Basierend auf dem Blick auf das Handbuch, wie in dem Fehler vorgeschlagen: http://dev.mysql.com/doc/refman/5.7/en/create-procedure.html – Andrew

+0

Ja. Es scheint so :) Vielen Dank, Bruder – DriLLFreAK100

Antwort

1

Dies könnte sein, was Sie wollen. Das Ganze in einem DELIMITER BLOCK und einige Änderungen am IF-Block (der ein paar Syntaxfehler hatte). Beachten Sie, es speichert jetzt auf meinem System.

DELIMITER $$ 
CREATE PROCEDURE `usp_GetUserValidation` 

(IN `@Username` VARCHAR(255), 
IN `@Password` VARCHAR(50), 
OUT `@ErrorCode` INT) 

    LANGUAGE SQL 
    NOT DETERMINISTIC 
    CONTAINS SQL 
    SQL SECURITY DEFINER 
    COMMENT 'To validate user login' 
BEGIN 

    IF EXISTS 
    (SELECT UserID 
     FROM mt_User 
     WHERE Username = `@Username` 
     AND Password = PASSWORD(`@Password`)) THEN 

      SET `@ErrorCode` = 0; 

    ELSE 
     SET `@ErrorCode` = 1; 
    END IF; 


    SELECT '@ErrorCode' AS res; 
END$$ 
DELIMITER ; 

Verwandte: Was ist der Deal mit DELIMITER ist.

MySQL-Handbuch Seite auf IF Syntax

Verwandte Themen