2016-05-20 10 views
0

Kann mir jemand helfen, mit der Erstellung dieser gespeicherten Prozedur zu beginnen? Ich lerne gerade und ich kann nicht herausfinden, warum das nicht funktioniert. Ich weiß, es ist etwas Einfaches, aber ich kann keine Beispiele finden, die zeigen, was falsch ist.mysql gespeichert proc wenn sonst mit wählen funktioniert nicht

Fehlercode 1064, SQL-Status 42000: Sie haben einen Fehler in Ihrer SQL-Syntax; Sie in die Bedienungsanleitung für die richtige Syntax zu Ihrer MySQL-Server-Version entspricht in der Nähe von ‚END IF‘ zu verwenden, in Zeile 1 Zeile 7, Spalte 1

CREATE PROCEDURE `su_verify_1`(IN inWks VARCHAR(15)) 
    If inWks = 'WN-IA15HXY41135' THEN 
select 'no' as result, '3' as errorcode, 'This is a test' as message; 
ELSE 
    select 'yes' as result; 
END IF; 

Danke für die Hilfe.

+0

Siehe auch: [14.1.16 PROCEDURE und CREATE FUNCTION Syntax CREATE] (http://dev.mysql.com/doc/refman/5.7/en/create-procedure. html) und [21.1 Gespeicherte Programme definieren] (http://dev.mysql.com/doc/refman/5.7/en/stored-programs-defining.html), werden sie in ihrem Lernprozess nützlich sein. – wchiquito

+0

Ich habe den Eindruck, dass es an Ihrem DELIMITER liegt. Es ist üblich, das Trennzeichen beim Schreiben von Prozeduren zu überschreiben (um Verwechslungen zwischen ';' und dem Ende der Prozedur zu vermeiden). Überprüfen Sie [this] (https://dev.mysql.com/doc/connector-net/en/connector-net-tutorials-stored-procedures.html) für ein Beispiel. Ändern Sie in der Regel das Trennzeichen zwischen der Prozedurdeklaration und wenn Sie fertig sind, ändern Sie es zurück in ';'. Hoffe es hilft :) – DarkCygnus

+0

Ja es war das Trennzeichen, danke. Fühlen Sie sich frei, Antwort zu schreiben, und ich gebe Ihnen Kredit. – spas2k

Antwort

1

Sie müssen ein anderes Trennzeichen als ein Semikolon setzen, damit MySQL weiß, wo die Prozedurdefinition endet. Wie es aussieht, sieht MySQL derzeit dies:

CREATE PROCEDURE `su_verify_1`(IN inWks VARCHAR(15)) 
    If inWks = 'WN-IA15HXY41135' THEN 
select 'no' as result, '3' as errorcode, 'This is a test' as message; 

Mit dem Rest der Zeilen als separate Befehle behandelt. Verwenden Sie den Befehl DELIMITER, dies zu ändern:

DELIMITER // 
CREATE PROCEDURE `su_verify_1`(IN inWks VARCHAR(15)) 
BEGIN 
    IF inWks = 'WN-IA15HXY41135' THEN 
     SELECT 'no' AS result, '3' AS errorcode, 'This is a test' AS message; 
    ELSE 
     SELECT 'yes' AS result; 
    END IF; 
END// 

DELIMITER ; 
+0

Ja, das war es, danke, – spas2k

Verwandte Themen