Как объявить переменную в MySQL?



как объявить переменную в mysql, чтобы мой второй запрос мог ее использовать?



Я хотел бы написать что-то вроде:



SET start = 1;
SET finish = 10;

SELECT * FROM places WHERE place BETWEEN start AND finish;
621   4  

4 ответов:

есть в основном три типа переменных в MySQL:

  1. пользовательские переменные (префикс @):

    вы можете получить доступ к любой пользовательской переменной без объявления или инициализация его. Если вы ссылаетесь на переменную, которая не была инициализированный, он имеет значение NULL и типом string.

    SELECT @var_any_var_name
    

    вы можете инициализировать переменную, используя SET или SELECT заявление:

    SET @start = 1, @finish = 10;    
    

    или

    SELECT @start := 1, @finish := 10;
    
    SELECT * FROM places WHERE place BETWEEN @start AND @finish;
    

    пользовательским переменным можно присвоить значение из ограниченного набора данных типы: целочисленная, десятичная, с плавающей запятой, двоичная или небинарная строка, или нулевое значение.

    пользовательские переменные сессии. То есть, пользователь переменная, определенная одним клиентом, не может быть видна или использована другим клиенты.

    их можно использовать в SELECT запросы с помощью Расширенная переменная пользователя MySQL техника.

  2. Локальные Переменные (нет префикса) :

    локальные переменные должны быть объявлены с помощью DECLARE перед доступ к нему.

    они могут быть использованы в качестве локальных переменных и входных параметров внутри хранимой процедуры:

    DELIMITER //
    
    CREATE PROCEDURE sp_test(var1 INT) 
    BEGIN   
        DECLARE start  INT unsigned DEFAULT 1;  
        DECLARE finish INT unsigned DEFAULT 10;
    
        SELECT  var1, start, finish;
    
        SELECT * FROM places WHERE place BETWEEN start AND finish; 
    END; //
    
    DELIMITER ;
    
    CALL sp_test(5);
    

    если DEFAULT предложение отсутствует, начальное значение NULL.

    область действия локальной переменной является BEGIN ... END блок в течение о чем и объявлено.

  3. Системные Переменные Сервера (префикс @@):

    сервер MySQL поддерживает много системные переменные настроено значение по умолчанию. Они могут быть типа GLOBAL,SESSION или BOTH.

    глобальные переменные влияют на общую работу сервера, тогда как переменные сеанса влияют на его работу для отдельного клиента подключение.

    чтобы увидеть текущие значения, используемые запущенным сервером, используйте SHOW VARIABLES заявление или SELECT @@var_name.

    SHOW VARIABLES LIKE '%wait_timeout%';
    
    SELECT @@sort_buffer_size;
    

    они могут быть установлены при запуске сервера с помощью параметров в командной строке или в файле опции. Большинство из них могут быть изменены динамически во время работы сервера с помощью SET GLOBAL или SET SESSION:

    -- Syntax to Set value to a Global variable:
    SET GLOBAL sort_buffer_size=1000000;
    SET @@global.sort_buffer_size=1000000;
    
    -- Syntax to Set value to a Session variable:
    SET sort_buffer_size=1000000;
    SET SESSION sort_buffer_size=1000000;
    SET @@sort_buffer_size=1000000;
    SET @@local.sort_buffer_size=10000;
    

SET

SET @var_name = value 

или

SET @var := value

обоих операторов = и := приняты


выберите

SELECT col1, @var_name := col2 from tb_name WHERE "conditon";

если несколько наборов записей найдено только последнее значение в col2-keep (override);

SELECT col1, col2 INTO @var_name, col3 FROM .....

в этом случае результат select не содержит значения col2

использовать set или выберите

SET @counter := 100;
SELECT @variable_name := value;

пример :

SELECT @price := MAX(product.price)
FROM product 

объявить имя_переменной [, имя_переменной] ... тип [значение по умолчанию] Этот оператор объявляет локальные переменные в сохраненных программах.

Ex. Объявить id INT unsigned DEFAULT 1;

чтобы указать значение по умолчанию для переменной, включите предложение по умолчанию. Значение может быть задано как выражение; оно не обязательно должно быть константой. Если предложение по умолчанию отсутствует, начальное значение равно NULL.

локальные переменные обрабатываются как сохраненные рутинные параметры с уважением для проверки типа данных и переполнения.

объявления переменных должны появляться перед объявлениями курсора или обработчика.

локальные имена переменных не чувствительны к регистру. Допустимые символы и правила цитирования такие же, как и для других идентификаторов

область действия локальной переменной-начало ... Конечный блок, в котором он объявлен. На переменную можно ссылаться в блоках, вложенных в блок Объявления, за исключением тех блоков, которые объявляют переменную с помощью такое же имя.

Comments

    Ничего не найдено.