mySQL storedprocedure przestaje działać po dodaniu warunku po 'WHERE'

0

Cześć,
Napisałam następujące zapytanie, które działa poprawnie zwracając tabelę z poprawnymi wynikami:

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

Jednak w momencie, gdy umieszczam ten kod w storedprocedure, zwracana tabela jest pusta:

CREATE DEFINER=root@localhost PROCEDURE procedura_lampa(
IN Akcja VARCHAR(25),
IN id_lampa INT,
INOUT 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),

)
BEGIN
IF Akcja = 'LISTA' THEN
BEGIN
SELECT * FROM ble.lampa_elektronowa
END;

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

 ELSEIF Akcja = 'WYPELNIJCBIDLAMPY' THEN
	BEGIN
		
		SELECT * FROM ble.lampa_elektronowa
		WHERE id_typ =
		(SELECT id_typ FROM typ
		WHERE typ = TYP);
    END;
END IF;   

END

wywołuję procedurę w następujący sposób:

call procedura_lampa('WYPELNIJCBIDLAMPY', @id_lampy, @nazwa_lampy, @id_pomiar, @punkt, @krzywa, @Ia, @IsVariable, @Vg, @Va, @VS, @Vf, @id_typ, 'pierwszy');

Gdy w zapytaniu nie ma warunku, zwracane tabele są zgodne z oczekiwaniami.

Proszę o pomoc,
Pozdrawiam

1
SELECT 
    le.*
FROM
    ble.lampa_elektronowa le
        INNER JOIN
    typ t ON t.id_typ = le.id_typ
WHERE
    t.typ = TYP

To samo zapytanie, bez podzapytania, działa szybciej.

0

Działa, bardzo dziękuję :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1