Mysql
 sql >> база данни >  >> RDS >> Mysql

@ символ в съхранената процедура?

@variable синтаксисът в MySQL обозначава дефинирана от потребителя променлива на сесията. Можете да зададете тези потребителски променливи извън съхранена процедура, но можете също да ги зададете вътре в съхранена процедура и ефектът е, че променливата запазва стойността, след като извикването на вашата процедура се върне.

Така че във вашия пример, следното също би направило същото:

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;

Добре е няколко сесии да задават потребителската променлива по този начин едновременно, тъй като потребителските променливи са обхванати до една сесия, а едновременните сесии може да имат променливи с едно и също име, но с различни стойности.

Синтаксисът на променливите без префикс @ е за променливи, локални за процедурата, или параметри на процедурата, или локални променливи, декларирани с ДЕКЛАРИРАНЕ в тялото на процедурата.

Това използване, което имате, като предавате потребителска променлива като параметър и я присвоявате в тялото на процедурата, е полезно, ако искате да извикате процедура няколко пъти и да съхраните резултата в отделни потребителски променливи. В противен случай всяко извикване на процедурата ще презапише предишната стойност в потребителската променлива @empCount за текущата сесия.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Редовете се броят без различими

  2. PHP MySQL генерира уникално произволно число

  3. Система за уведомяване, използваща php и mysql

  4. Проверка на заявката за вмъкване дали съществува запис - Ако не, вмъкнете го

  5. Защо моят PDO не работи?