3 回答

TA貢獻1802條經驗 獲得超10個贊
用戶定義變量 (以 @
):您可以訪問任何用戶定義的變量,而無需聲明或初始化它。如果引用未初始化的變量,則該變量的值為 NULL
和一種字符串。 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用戶變量技術 .局部變量 (無前綴): 需要使用 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
在其中聲明它的塊。 服務器系統變量 (以 @@
):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;

TA貢獻1803條經驗 獲得超6個贊
集
SET @var_name = value
SET @var := value
選擇
SELECT col1, @var_name := col2 from tb_name WHERE "conditon";
SELECT col1, col2 INTO @var_name, col3 FROM .....

TA貢獻1856條經驗 獲得超11個贊
添加回答
舉報