sql server中局部變量與全局變量的 申明與賦值(轉)


來源: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_type  

select   @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   
返回當前安裝的日期、版本和處理器類型。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM