Mariadb

聲明和使用 MarisDB 使用者定義變數的正確方法是什麼?

  • April 5, 2021

我正在使用 MariaDB 版本 10.3.28-MariaDB-cll-lve

這個網站https://mariadb.com/kb/en/user-defined-variables/

使用者定義的變數名稱前面必須有一個 at 字元 (@)

這就是我通常做的事情,但最近我很著急,忘記了 ‘@ 並編寫了以下函式,該函式似乎可以正常工作,而變數前面沒有 ‘@’。

那麼在使用者定義的變數前面有一個’@‘是一個固定的要求嗎?

如果是,為什麼沒有它我的功能可以正常工作?

DELIMITER $$
CREATE  FUNCTION get_next_redacted_member_id() RETURNS INT(11)
BEGIN
      DECLARE result INT SIGNED;
      DECLARE lastid INT;
      INSERT INTO redacted_member_id ( date_used) VALUES ( NOW() ); 
      SET lastid = (SELECT LAST_INSERT_ID() );
      SET result =  -1 * lastid ;
      RETURN result;
END$$
DELIMITER ;

主要區別在於您可以在儲存函式和過程中使用 DECALRE

聲明 var_name

該語句用於聲明儲存程序中的局部變數。

手冊

使用者定義的變數

使用者定義變數是可以由使用者創建並存在於會話中的變數。

手冊

這意味著每個使用者定義的變數都可以在每個位置(在會話中)訪問,而不僅僅是在儲存過程/函式中。因此,您在儲存過程中設置使用者定義的變數,您可以在儲存過程結束後獲取值。這對於調試此類過程/功能非常有幫助。

此外,當您DECLARE使用變數時,您還可以設置其數據類型和大小。

使用使用者定義的 MySQL 決定當您需要什麼時SET @a = 123455

引用自:https://dba.stackexchange.com/questions/289276