局部變數_先聲明再賦值
聲明局部變數
DECLARE @變數名 資料類型 DECLARE @bookName varchar(20) DECLARE @bId int
賦值
SET @變數名 =值 --set用於普通的賦值SELECT @變數名 = 值 --用於從表中查詢資料並賦值
例:
declare @mo money --聲明變數select @mo=b_money from Book where b_title='.NETMVC3' --賦值 @mo=57.00select * from Book where b_money<@mo --使用變數
變數分為:
局部變數:
局部變數必須以標記@作為首碼 ,如@Age int
局部變數:先聲明,再賦值
全域變數(系統變數):
全域變數必須以標記@@作為首碼,如@@version
全域變數由系統定義和維護,我們只能讀取,不能修改全域變數的值
IF ELSE
IF(條件運算式)
BEGIN --相當於C#裡的{
語句1 ……
END --相當於C#裡的}
ELSE
BEGIN
語句1
……
END
例:
問題:
統計並顯示所有書籍價格(b_money) 的平均值,如果平均價格在50以上,顯示“A“,並顯示平均價格最高的2本書;如果在50以下,顯示“B“,並顯示平均價格最少的2本書。
分析:
第一步,統計平均價格存入臨時變數;
第二步,用IF-ELSE判斷;
declare @mon moneyselect @mon = AVG(b_money) from Bookselect @mon 平均價 if @mon >=50begin select 'A' 大於等於50select top 2 * from Book order by b_money descendelsebeginselect 'B' 小於50select top 2 * from Book order by b_money ascend
WHILE迴圈
WHILE(條件運算式)
BEGIN --相當於C#裡的{
語句
……
BREAK
END --相當於C#裡的}
例:
問題:
書籍價格上漲,確保每本書價格最少50元。提價:先每本都加2元,看是否都價格達標,如果沒有全部達標,每本再加2元,再看是否都達標,如此反覆提價,直到所有書都達標為止 。
分析:
第一步,統計沒達標的本數 ;
第二步,如果有書沒通過,提價;
第三步,迴圈判斷。
declare @mon intselect @mon = COUNT(*) from book where b_money<50select @mon 低於50的書數while (@mon>0)begin update book set b_money=b_money+2 select @mon = COUNT(*) from book where b_money<50endselect @mon 低於50的書數select * from book
另一種寫法:
DECLARE @mon intWHILE(1=1) --條件永遠成立 BEGIN SELECT @mon=COUNT(*) FROM Book WHERE b_money<50 --統計不達標本數 IF (@mon>0) UPDATE Book --每本加元 SET b_money=b_money+2 ELSE BREAK --退出迴圈(只有一行語句可省begin-end) ENDSELECT * FROM Book
aaaa