it-swarm.it

In che modo MySQL restituisce un set di risultati da una procedura memorizzata?

Sto cercando di concentrarmi sulle procedure memorizzate da utilizzare in un'applicazione Web. Mi sembra che qualunque sia l'ultima affermazione in una procedura memorizzata MySQL, sembra essere ciò che viene trattato come set di risultati di quella procedura. Sfortunatamente, sembra che ci siano riferimenti nei documenti MySQL che affermano che una procedura può restituire più set di risultati. Come viene attivato questo comportamento? Come posso dire al server MySQL che voglio esplicitamente restituire solo un set di risultati?

(Ad esempio, ho una query che fa un SELECT e alcuni inserti. Non voglio dire ai clienti degli inserti, ma voglio che al cliente venga assegnato il set di risultati del SELECT ....)

16
Billy ONeal

Ogni istruzione SELECT che non viene inserita in una tabella o in una variabile produrrà un set di risultati.

Se si desidera che la procedura memorizzata restituisca solo un set di risultati, assicurarsi di disporre di una sola istruzione SELECT. Se hai altre istruzioni SELECT, assicurati che inseriscano i risultati in una tabella o variabile.

[~ ~ #] aggiornamento [~ ~ #]
Ecco alcuni esempi di procedure memorizzate.

Questa procedura memorizzata restituirebbe un set di risultati:

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 ;

Questa procedura memorizzata restituirebbe due set di risultati:

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