MySQL 變量類型


用戶定義的變量(前綴為@):

您可以訪問任何用戶定義的變量,而無需聲明或初始化它。如果引用尚未初始化的變量,則其值為NULL和字符串類型。

select @now2;
NULL

set賦值:

set @num=0;
-- select count(1) from hs_draw_info where unify_loan_account is not null into @num;
select count(1) into @num from hs_draw_info where unify_loan_account is not null;
select @num;

select賦值:

select now() into @now;
select @now;

2019-02-20 13:44:21

或者

SELECT @start := 1, @finish := 10;
select @start,@finish;

select使用:=也可以實現賦值

用戶定義的變量是特定於會話的。也就是說,其他客戶端無法看到或使用由一個客戶端定義的用戶變量。

局部變量(無前綴):

DECLARE在訪問本地變量之前,需要聲明它們。

它們可以用作局部變量和存儲過程中的輸入參數。

如果缺少default,默認初始化為NULL

delimiter $$
drop procedure if exists pro $$
create procedure pro()
begin
   declare num int default 0;
     select count(1) from hs_draw_info where unify_loan_account is not null into num;
     select num;
end $$
delimiter ;
call pro();

上面的num就是局部變量。

局部變量的BEGIN ... END范圍是聲明它的塊。

服務器系統變量(前綴@@):

MySQL服務器維護許多配置為默認值的系統變量。它們可以是類型GLOBALSESSIONBOTH

全局變量會影響服務器的整體操作,而會話變量會影響其對各個客戶端連接的操作。

要查看正在運行的服務器使用的當前值,請使用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;

參考:

如何在MySQL中聲明變量?

13.7.4.1變量賦值的SET語法


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM