sql >> Databáze >  >> RDS >> Mysql

symbol @ v uložené proceduře?

@variable syntaxe v MySQL označuje uživatelem definovanou proměnnou relace. Tyto uživatelské proměnné můžete nastavit mimo uloženou proceduru, ale můžete je také nastavit uvnitř uložené procedury a výsledkem je, že proměnná si zachová hodnotu i po návratu volání procedury.

Takže ve vašem příkladu by totéž udělalo i následující:

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;

Je v pořádku, když uživatelskou proměnnou nastavuje tímto způsobem více relací současně, protože uživatelské proměnné se vztahují na jednu relaci a souběžné relace mohou mít proměnné stejného názvu, ale s různými hodnotami.

Syntaxe proměnné bez předpony @ je pro proměnné lokální v proceduře, buď parametry procedury, nebo jinak lokální proměnné deklarované pomocí PROHLÁŠIT v těle procedury.

Toto použití, které máte, předávání uživatelské proměnné jako parametru a její přiřazení v těle procedury, je užitečné, pokud chcete proceduru volat několikrát a uložit výsledek do samostatných uživatelských proměnných. Jinak by každé volání procedury přepsalo předchozí hodnotu v uživatelské proměnné @empCount pro aktuální relaci.




  1. Jaký typ dat pro zeměpisnou šířku a délku?

  2. MySQL a polská slova

  3. Umožňuje MySQL zpětná volání v C tak, že když dojde ke změně, mohu být informován?

  4. Připojte se ke vzdálené databázi MySQL z kontejneru dockeru