局部变量_先声明再赋值
声明局部变量
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.00 select * 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 money select @mon = AVG(b_money) from Book select @mon 平均价 if @mon >=50 begin select 'A' 大于等于50 select top 2 * from Book order by b_money desc end else begin select 'B' 小于50 select top 2 * from Book order by b_money asc end
WHILE循环
WHILE(条件表达式)
BEGIN --相当于C#里的{
语句
……
BREAK
END --相当于C#里的}
例:
问题:
书籍价格上涨,确保每本书价格最少50元。提价:先每本都加2元,看是否都价格达标,如果没有全部达标,每本再加2元,再看是否都达标,如此反复提价,直到所有书都达标为止 。
分析:
第一步,统计没达标的本数 ;
第二步,如果有书没通过,提价;
第三步,循环判断。
declare @mon int select @mon = COUNT(*) from book where b_money<50 select @mon 低于50的书数 while (@mon>0) begin update book set b_money=b_money+2 select @mon = COUNT(*) from book where b_money<50 end select @mon 低于50的书数 select * from book另一种写法:
DECLARE @mon int WHILE(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) END SELECT * FROM Book
aaaa