程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> 淺談MySQL存儲過程中declare和set定義變量的區別

淺談MySQL存儲過程中declare和set定義變量的區別

編輯:關於MYSQL數據庫

在存儲過程中常看到declare定義的變量和@set定義的變量。簡單的來說,declare定義的類似是局部變量,@set定義的類似全局變量。

1、declare定義的變量類似java類中的局部變量,僅在類中生效。即只在存儲過程中的begin和end之間生效。

2、@set定義的變量,叫做會話變量,也叫用戶定義變量,在整個會話中都起作用(比如某個應用的一個連接過程中),即這個變量可以在被調用的存儲過程或者代碼之間共享數據。如何理解呢?可以看下面這個簡單例子,很好理解。 

(1)先執行下面腳本,創建一個存儲過程,分別有declare形式的變量和@set形式的變量

DROP PROCEDURE IF EXISTS temp;
DELIMITER //
CREATE PROCEDURE temp()
BEGIN
  DECLARE a INT DEFAULT 1;

  SET a=a+1;
  SET @b=@b+1;
  SELECT a,@b;

END
//
DELIMITER ;

(2)接著為b變量初始化。

SET @b=1;

(3)然後重復調用這個存儲過程。

CALL temp();

(4)會發現a的值不改變,而b的值會一直增加。

所以,總結起來就是開頭那句話,declare定義的類似是局部變量,@set定義的類似全局變量。

以上這篇淺談MySQL存儲過程中declare和set定義變量的區別就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved