來源:http://www.111cn.net/database/mssqlserver/36734.htm
例子:http://www.cnblogs.com/sunxi/p/4497493.html
局部變量用一個@標識,全局變量用兩個@(常用的全局變量一般都是已經定義好的);
申明局部變量語法:declare @變量名 數據類型;例如:declare @num int;
賦值:有兩種方法式(@num為變量名,value為值)
set @num=value; 或 select @num=value;
如果想獲取查詢語句中的一個字段值可以用select給變量賦值,如下:
select @num=字段名 from 表名 where ……
mysql教程中變量不用事前申明,在用的時候直接用“@變量名”使用就可以了。
第一種用法:set @num=1; 或set @num:=1; //這里要使用變量來保存數據,直接使用@num變量
第二種用法:select @num:=1; 或 select @num:=字段名 from 表名 where ……
注意上面兩種賦值符號,使用set時可以用“=”或“:=”,但是使用select時必須用“:=賦值”
在sql中,我們常常使用臨時表來存儲臨時結果,對於結果是一個集合的情況,這種方法非常實用,但當結果僅僅是一個數據或者是幾個數據時,還要去建一個表,顯得就比較麻煩,另外,當一個sql語句中的某些元素經常變化時,比如選擇條件,(至少我想)應該使用局部變量。當然ms sql server的全局變量也很有用。
> > > > 局部變量
聲明:declare @local_variable data_type
@local_variable 是變量的名稱。變量名必須以 at 符 (@) 開頭。data_type 是任何由系統提供的或用戶定義的數據類型。變量不能是 text、ntext 或 image 數據類型。
示例:
use master
declare @sel_type char(2)
declare @sel_cunt numeric(10)
set @sel_type = 'u '/*user table*/
set @sel_cunt = 10/*返回系統中用戶表的數目*/
select @sel_cunt = count(*)
from sysobjects
where type = @sel_typeselect @sel_cunt as 'user table ' 's count '
如果要返回系統表的數目,可以用set @sel_type = 's '
可能這個例子並不能說明使用變量的好處,我只是想說明使用方法。當一組(幾個甚至幾十個)sql語句都使用某個變量時,就能體會到他的好處了。
> > > > 全局變量
全局變量是系統預定義的,返回一些系統信息,全局變量以兩個at(@)開頭。下面是我統計了一些較為常用的變量。
@@connections
返回自上次啟動以來連接或試圖連接的次數。
@@cursor_rows
返回連接上最后打開的游標中當前存在的合格行的數量。
@@datefirst
返回每周第一天的數字
@@error
返回最后執行的sql 語句的錯誤代碼。
@@fetch_status
返回被 fetch 語句執行的最后游標的狀態,而不是任何當前被連接打開的游標的狀態。
@@identity
返回最后插入的標識值
@@langid
返回當前所使用語言的本地語言標識符(id)。
@@language
返回當前使用的語言名。
@@lock_timeout
返回當前會話的當前鎖超時設置,單位為毫秒。
@@procid
返回當前過程的存儲過程標識符 (id) 。
@@rowcount
返回受上一語句影響的行數。
@@servername
返回運行 的本地服務器名稱。
@@spid
返回當前用戶進程的服務器進程標識符 (id)。
@@trancount
返回當前連接的活動事務數。
@@version
返回當前安裝的日期、版本和處理器類型。