Mysql
 sql >> Baza danych >  >> RDS >> Mysql

@ symbol w procedurze składowanej?

@variable składnia w MySQL oznacza zmienną sesji zdefiniowaną przez użytkownika. Te zmienne użytkownika można ustawić poza procedurą składowaną, ale można je również ustawić wewnątrz procedury składowanej, a efektem jest to, że zmienna zachowuje wartość po zwróceniu wywołania procedury.

Tak więc w twoim przykładzie następujące działania również zrobiłyby to samo:

CREATE PROCEDURE emp_count_2()
BEGIN
 SELECT COUNT(*) INTO @empCount FROM Employee;
END

CALL emp_count_2(); /* sets @empCount as a side-effect */
SELECT @empCount;

W przypadku wielu sesji ustawienie zmiennej użytkownika w ten sposób jest w porządku, ponieważ zakres zmiennych użytkownika obejmuje pojedynczą sesję, a współbieżne sesje mogą mieć zmienne o tej samej nazwie, ale o różnych wartościach.

Składnia zmiennej bez prefiksu @ dotyczy zmiennych lokalnych dla procedury, parametrów procedury lub zmiennych lokalnych zadeklarowanych za pomocą ZADEKLARUJ w ramach organu procedury.

To użycie, przekazując zmienną użytkownika jako parametr i przypisując ją w ciele procedury, jest przydatne, jeśli chcesz wywołać procedurę kilka razy i zapisać wynik w oddzielnych zmiennych użytkownika. W przeciwnym razie każde wywołanie procedury nadpisze poprzednią wartość w zmiennej użytkownika @empCount dla bieżącej sesji.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Konwersja wierszy ze zbyt dużą liczbą wartości na kolumny

  2. Czy możesz wykonać pętlę For Each Row za pomocą MySQL?

  3. Architektura wielodostępna Rails, ustalanie zakresu dostępu do wielu najemców

  4. Skopiuj dane do nowej tabeli w MySQL

  5. PDOException „nie można znaleźć sterownika” w php