2016-07-28 23 views
0

Ich bin ein erster Timer mit phpmyadmin. Ich bin mir in meiner gespeicherten Prozedur nicht bewusst, dass ich in meinem Code arbeite. Ich weiß nicht, wie man eine gespeicherte Prozedur in phpmyadmin macht.Gespeicherte Prozedur in phpmyadmin

Dies ist mein Code:

DELIMITER $$ 
CREATE PROCEDURE sp_1_service_card_report(IN service_card_no INT) 
BEGIN 
    DECLARE error_1 INT; 

    SELECT COUNT(service_card.customer_id) 
    INTO error_1 
    FROM service_card 
    WHERE service_card.id = 27; 

    DECLARE error_2 INT; 

    SELECT COUNT(service_card.serial_no_id) 
    INTO error_2 
    FROM service_card 
    WHERE service_card.id = 27; 

    IF error_1 > 0 AND error_2 > 0 THEN 
    SELECT 
     service_card.id as yes from service_card where service_card.id=27; 
    ELSE 
     SELECT service_card.customer_id as no from service_card.id=27; 
    END IF ; 

END $$ 
DELIMITER ; 

Das ist mein Fehler:

MySQL said: Documentation

1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'DECLARE error_2 INT;

SELECT COUNT(service_card.serial_no_id)
INTO ' at line 11

Könnt ihr mir helfen mit diesem? Ich habe meine 1-stündige Suche auch hier auf stackoverflow durchgeführt.

Danke.

+0

Ich weiß nicht, warum u diesen Fehler bekam aber tat u versucht, diese Linie zu bewegen knapp unter error_1 Zeile deklarieren? –

+0

Versuchen Sie, die zweite DECLARE direkt nach der ersten zu verschieben. –

+0

Ich lege den eror_2 einfach oben drauf. Ich habe gerade rot x Fleck in wegen der Komma (;) "Ich kann einfach nicht verstehen, was ich falsch gemacht habe. –

Antwort

0

DECLARE Anweisungen müssen auf den ersten gesetzt werden und Sie haben einen select Tippfehler in Abfrage am Ende der Prozedur:

DELIMITER $$ 
CREATE PROCEDURE sp_1_service_card_report(IN service_card_no INT) 
BEGIN 
    DECLARE error_1 INT; 
    DECLARE error_2 INT; 

    SELECT COUNT(service_card.customer_id) 
    INTO error_1 
    FROM service_card 
    WHERE service_card.id = 27; 


    SELECT COUNT(service_card.serial_no_id) 
    INTO error_2 
    FROM service_card 
    WHERE service_card.id = 27; 

    IF error_1 > 0 AND error_2 > 0 THEN 
    SELECT 
     service_card.id as yes from service_card where service_card.id=27; 
    ELSE 
     SELECT service_card.customer_id as no from service_card where service_card.id=27; 
    END IF ; 

END $$ 
DELIMITER ;