it-swarm-eu.dev

Jak MySQL vrátí sadu výsledků z uložené procedury?

Snažím se dostat hlavu kolem uložených procedur pro použití ve webové aplikaci. Zdá se mi, že ať už je poslední příkaz uložen v uložené proceduře MySQL, zdá se, že se s tím bude zacházet jako s výsledkovou sadou této procedury. Bohužel se zdá, že v dokumentech MySQL jsou odkazy, které říkají, že procedura může vrátit více sad výsledků. Jak je toto chování spuštěno? Jak mohu říct serveru MySQL, že výslovně chci vrátit pouze jednu sadu výsledků?

(Například mám dotaz, který provede SELECT a několik příloh. Nechci klientům říkat o přílohách, ale chci, aby klient dostal sadu výsledků VÝBĚRU ....)

16
Billy ONeal

Každý příkaz SELECT, který nelze vložit do tabulky nebo proměnné, vytvoří sadu výsledků.

Pokud chcete, aby uložená procedura vrátila pouze jednu sadu výsledků, ujistěte se, že máte pouze jeden příkaz SELECT. Pokud máte jiné příkazy SELECT, ujistěte se, že vkládají výsledky do tabulky nebo proměnné.

AKTUALIZACE
Zde jsou příklady uložených procedur.

Tato uložená procedura vrátí jednu sadu výsledků:

DELIMITER ;;
CREATE DEFINER=CURRENT_USER PROCEDURE stored_procedure_name()
BEGIN
    DECLARE local_variable_name INT;

    SELECT column_name FROM table_1 LIMIT 1 INTO local_variable_name;

    SELECT * FROM table_1;
END;;
DELIMITER ;

Tato uložená procedura vrátí dvě sady výsledků:

DELIMITER ;;
CREATE DEFINER=CURRENT_USER PROCEDURE stored_procedure_name()
BEGIN
    DECLARE local_variable_name INT;

    SELECT column_name FROM table_1 LIMIT 1 INTO local_variable_name;

    SELECT * FROM table_1;

    SELECT * FROM table_2;
END;;
DELIMITER ;
17
dabest1