MySql儲存過程 3 變數

2021-06-08 15:51:49 字數 1764 閱讀 5172

1、變數的定義

在mysql裡面可以像我們寫**中一樣定義變數來保持中間結果,看下面的格式:

declare variable_name datatype(size) default default_value;
declare相當於關鍵字,有點類似var,表示定義乙個變數;然後variable_name是你指定的變數名稱;datatype表示資料型別而括號內的size表示對應型別的格式比如varchar(50)這樣子,這裡需要注意的是datatype只能是mysql支援的那些基本資料型別;default關鍵字指明了變數的預設值為default_value。

定義多個相同型別的變數可以這樣子:

declare x, y int default 0
表示定義了兩個變數x、y,整形,預設值為0

2、變數的賦值

同程式裡面一樣,定義了變數,我們也需要在程式中對他賦值,下面是示例**:

declare total_count int default 0

set total_count = 10;

可以看到進行賦值時候需要在前面加上:set 這個關鍵字。

當然由於儲存過程的特殊性(用於資料庫的資料操作),所以除了set這種賦值方法,還可以通過select into語句將返回的值賦給變數:

declare total_products int default 0

select count(*) into total_products

from products

看到這裡把products的記錄數賦給了total_products這個變數。所以如果上面我們**內是3個記錄的話,這裡total_products就是等於3了

3、變數的scope(作用範圍)

變數的作用範圍同程式設計裡面類似,在這裡一般是在對應的begin和end之間。在end之後這個變數就沒有作用了,不能使用了。這個同程式設計一樣。

另外有種變數叫做會話變數(session variable),也叫做使用者定義的變數(user defined variable)。這種變數要在變數名稱前面加上「@」符號,叫做會話變數,代表整個會話過程他都是有作用的,這個有點類似於全域性變數一樣。這種變數用途比較廣,因為只要在乙個會話內(就是某個應用的乙個連線過程中),這個變數可以在被呼叫的儲存過程或者**之間共享資料。下面看個簡單的例子,以理解這種變數和本地變數的區別:

首先修改下之前的儲存過程如下:

這裡定義了乙個是local的變數,乙個是session的變數,對於session的變數,不需要定義,mysql根據你賦給該變數的值來確定型別(更詳細的需要另一篇文章來解釋:>)。

然後我們在query browser上面先執行這樣一條語句來對@t2進行賦初值:

賦予往初值後我們呼叫我們的儲存程序。每次執行這個儲存程序我們發現t1的值是不變的,而@t2每次會增加1,因為我們這是在乙個會話裡面所以@t2就一直作用著,每次自己增加1.

MySql儲存過程 3 變數

1 變數的定義 在mysql裡面可以像我們寫 中一樣定義變數來保持中間結果,看下面的格式 sql view plain copy declare variable name datatype size default default value declare相當於關鍵字,有點類似var,表示定義乙...

MySQL儲存過程 變數

mysql變數定義 選中資料庫,更改執行分隔符 use 資料庫名 修改執行分隔符 delimiter 第一種建立過程方法 帶引數方式 帶參方法一 variable 為變數名 int 為變數型別 in 輸入引數 表示該引數的值必須在呼叫儲存過程之前指定,在儲存過程中修改的值不能被返回 不會影響到傳入引...

mysql 儲存過程變數拼接

有時候我們需要模糊查詢,但是同時我們又要 在模糊查詢的時候使用變數,我們又想在變數的後面拼接乙個 去匹配模糊查詢 那麼就會用到 concat函式 示例如下 select count id from config where name like concat studentname,其中student...