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

MySQL:@променлива срещу променлива. Каква е разликата?

MySQL има концепция за дефинирани от потребителя променливи .

Те са свободно въведени променливи, които могат да бъдат инициализирани някъде в сесията и да запазят стойността си до края на сесията.

Те са в началото с @ знак, като този:@var

Можете да инициализирате тази променлива с SET изявление или вътре в заявка:

SET @var = 1

SELECT @var2 := 2

Когато разработите съхранена процедура в MySQL, можете да предадете входните параметри и да декларирате локалните променливи:

DELIMITER //

CREATE PROCEDURE prc_test (var INT)
BEGIN
    DECLARE  var2 INT;
    SET var2 = 1;
    SELECT  var2;
END;
//

DELIMITER ;

Тези променливи не се добавят с никакви префикси.

Разликата между променлива на процедурата и специфична за сесия дефинирана от потребител променлива е, че променливата на процедурата се инициализира повторно на NULL всеки път, когато процедурата се извиква, докато специфичната за сесията променлива не е:

CREATE PROCEDURE prc_test ()
BEGIN
    DECLARE var2 INT DEFAULT 1;
    SET var2 = var2 + 1;
    SET @var2 = @var2 + 1;
    SELECT  var2, @var2;
END;

SET @var2 = 1;

CALL prc_test();

var2  @var2
---   ---
2     2


CALL prc_test();

var2  @var2
---   ---
2     3


CALL prc_test();

var2  @var2
---   ---
2     4

Както можете да видите, var2 (променлива на процедурата) се инициализира отново всеки път, когато процедурата бъде извикана, докато @var2 (специфична за сесия променлива) не е.

(В допълнение към потребителски дефинирани променливи, MySQL също има някои предварително дефинирани "системни променливи", които могат да бъдат "глобални променливи", като @@global.port или "променливи на сесията" като @@session.sql_mode; тези "променливи на сесията" не са свързани със специфични за сесията дефинирани от потребителя променливи.)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Създаване на уеб приложение от нулата с помощта на Python Flask и MySQL:Част 2

  2. Mysql select recursive get all child с множество нива

  3. PHP формат date() при вмъкване в datetime в MySQL

  4. Как да намерите името на ограничение в MySQL

  5. MariaDB – MySQL – Показване на двигатели за показване на всички налични и поддържани двигатели