程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySql存儲過程—3、變量

MySql存儲過程—3、變量

編輯:MySQL綜合教程


MySql存儲過程—3、變量   相關鏈接: MySql存儲過程—1、SQL存儲過程的基礎知識 http://www.BkJia.com/database/201208/148790.html;   MySql存儲過程—2、第一個MySql存儲過程的建立 http://www.BkJia.com/database/201208/148791.html   1、變量的定義 在Mysql裡面可以像我們寫代碼中一樣定義變量來保持中間結果,看下面的格式:   www.2cto.com   [sql]  DECLARE variable_name datatype(size) DEFAULT default_value;    DECLARE相當於關鍵字,有點類似var,表示定義一個變量;然後variable_name是你指定的變量名稱;datatype表示數據類型而括號內的size表示對應類型的格式比如varchar(50)這樣子,這裡需要注意的是datatype只能是MySql支持的那些基本數據類型;DEFAULT關鍵字指明了變量的默認值為default_value。   定義多個相同類型的變量可以這樣子: [sql]  DECLARE x, y INT DEFAULT 0    表示定義了兩個變量x、y,整形,默認值為0 2、變量的賦值   同程序裡面一樣,定義了變量,我們也需要在程序中對他賦值,下面是示例代碼:   www.2cto.com   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)。這種變量要在變量名稱前面加上“@”符號,叫做會話變量,代表整個會話過程他都是有作用的,這個有點類似於全局變量一樣。這種變量用途比較廣,因為只要在一個會話內(就是某個應用的一個連接過程中),這個變量可以在被調用的存儲過程或者代碼之間共享數據。下面看個簡單的例子,以理解這種變量和本地變量的區別:   首先修改下之前的存儲過程如下:  www.2cto.com       這裡定義了一個是local的變量,一個是session的變量,對於session的變量,不需要定義,mysql根據你賦給該變量的值來確定類型(更詳細的需要另一篇文章來解釋:>)。   然後我們在Query browser上面先執行這樣一條語句來對@t2進行賦初值:     賦予往初值後我們調用我們的存儲進程。每次執行這個存儲進程我們發現t1的值是不變的,而@t2每次會增加1,因為我們這是在一個會話裡面所以@t2就一直作用著,每次自己增加1.

 

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