/ / Wybieranie zmiennych sesji MySQL wiele razy - mysql, sesja, zmienne, procedury

Wybieranie zmiennych sesji MySQL wiele razy - mysql, sesja, zmienne, procedury

Mając dziwny problem wybierając zmienne sesji, które są zmieniane przez procedurę przechowywaną.

 call calculate("input1", "input2",@price);
select @price; /*price is 2.00*/


call calculate("anotherinput","anotherinput2",@price);
select @price; /*price is 3.00*/

Jednak odpowiedź, którą otrzymuję, wynosi w rzeczywistości 2 3,00 "zamiast 2,00, a następnie 3,00. Zakładając, że jest on nadpisywany i wszystko zmywa. Ale jaki jest najlepszy sposób na zrobienie tego?

Odpowiedzi:

0 dla odpowiedzi № 1

Procedura mogła nie zdefiniować parametru price jako OUT parametr, ale IN parametr. Chyba że przeszedł IN Parametr będzie zawsze wyświetlał tę samą przekazaną wartość OLD.

Przykład roboczy:

mysql> create procedure test_sp( inout p int, in q int ) set p := p*q;
mysql> set @p := 4; set @q := 6;
mysql> delimiter //
mysql> call test_sp( @p, @q );
-> select @p, @q;
-> call test_sp( @p, @q );
-> select @p, @q;
-> //

+------+------+
| @p   | @q   |
+------+------+
|   24 |    6 |
+------+------+
1 row in set (0.00 sec)

+------+------+
| @p   | @q   |
+------+------+
|  144 |    6 |
+------+------+
1 row in set (0.01 sec)