2016-04-23 12 views
0

Ich habe ein Problem mit der Prozedur in SQL.SQL-Prozedur gibt leere Tabelle trotz funktionierender Abfrage zurück

in SQL Mein Code, der so arbeitet, ist:

SELECT * FROM ble.lampa_elektronowa 
WHERE id_typ = 
(SELECT id_typ FROM typ 
WHERE typ = 'pierwszy') 

Und das Ergebnis dieser Abfrage ist

here

Wenn ich versuche, das Verfahren mit diesem Code zu schreiben (IF Akcja = 'DODAJ_DATA' THEN):

CREATE DEFINER=`root`@`localhost` PROCEDURE `procedura_lampa`( 
IN Akcja   VARCHAR(25), 
IN id_lampa  INT, 
IN nazwa_lampy VARCHAR(50), 
IN id_pomiar  INT, 
IN punkt   INT, 
IN krzywa   INT, 
IN Ia    FLOAT, 
IN IsVariable  FLOAT, 
IN Vg    FLOAT, 
IN Va    FLOAT, 
IN Vs    FLOAT, 
IN Vf    FLOAT, 
IN id_typ   INT, 
IN TYP   VARCHAR(45), 
IN zapas15  INT, 
IN zapas16  INT, 
IN zapas17  INT, 
IN zapas18  INT, 
IN zapas19  INT, 
OUT Komunikat  VARCHAR(200) 
) 
BEGIN 
IF Akcja = 'LISTA' THEN 
    BEGIN 
     SELECT * FROM ble.lampa_elektronowa; 
     SET @Komunikat = 'Wyświetlono'; 
     SET Komunikat = @Komunikat; 

    END; 
END IF; 

IF Akcja = 'DODAJ_DATA' THEN 
    BEGIN 
     INSERT INTO ble.data (data) 
     VALUES (NOW()); 
    END; 
END IF; 

IF Akcja = 'WYPELNIJCBIDLAMPY' THEN 
    BEGIN 

     SELECT nazwa_lampy FROM ble.lampa_elektronowa 
     WHERE id_typ = 
     (SELECT id_typ FROM typ 
     WHERE typ = TYP); 
    END; 
END IF; 

END 

und ich bin tryin g, um diese Prozedur unter Verwendung dieses Codes aufzurufen:

call procedura_lampa('WYPELNIJCBIDLAMPY', @id_lampy, @nazwa_lampy, @id_pomiar, @punkt, @krzywa, @Ia, @IsVariable, @Vg, @Va, @Vs, @Vf, @id_typ, 'pierwszy', @zapas15, @zapas16, @zapas17, @zapas18, @zapas19, @Komunikat) ; 

, das Ergebnis der Abfrage ist leer. Die Tabelle "typ" sieht wie folgt aus:

that.

Warum funktioniert es nicht? Dies sollte einige Ergebnisse zurückgeben.

+1

Bearbeiten Sie Ihre Frage und (1) Zeigen Sie, wie Sie die gespeicherten Prozeduren aufrufen; (2) Erklären Sie, was nicht funktioniert. –

+0

Bitte fixiere deinen Fragetitel. Mach es nützlich. –

Antwort

0

Sie haben zwei Semikola in Ihrer Prozedur. Eine nach der Unterabfrage, eine weitere nach der END. Entfernen Sie den ersten sicher. Wenn Sie immer noch Fehler haben, lassen Sie uns wissen, was der Inhalt ist.

+0

Sie [sicher] (https://dev.mysql.com/doc/refman/5.7/en/if.html) darüber? – Drew

+0

Wenn ich das erste Semikolon entferne, zeigt die MySQL Workbench den Fehler "Syntaxfehler: irrelevante Eingabe gefunden - erwartet 'Semikolon'". – bananananafu

+0

Es funktioniert immer noch nicht. Könnte mir jemand helfen? – bananananafu

Verwandte Themen