sqlserver 变量级基本语法

--1.变量分为局部变量和全局变量 --局部变量: --局部变量必须以标记@做为前缀 ,如@age --局部变量的使用也是先声明,再赋值  --全局变量: --全局变量必须以标记@ @做为前缀,如@@version --全局变量由系统定义和维护,咱们只能读取,不能修改全局变量的值  --2.局部变量 --1>声明
declare @name varchar(8) declare @age int
--2>赋值
set @name='jack' --赋值方式一
set @age=20
select @name=firstname from employees where employeeid=1 --赋值方式二 --3>使用 输出 --convert(数据类型,表达式):将表达式转成指定数据类型
print '姓名:'+@name+',年龄:'+convert(varchar,@age) --以消息形式输出
select @name as '姓名'--以表格形式输出
go

--3.全局变量 --@@ERROR:最后一个T-SQL错误的错误号,若是为0无错 --@@IDENTITY:最后一次插入的标识值 --@@ROWCOUNT:受上一个SQL语句影响的行数
select * from employees select * from employees where employeeid=1
print '总共查询到'+convert(varchar,@@rowcount) update employees set birthdate='2011-1-1' where employeeid=1
print '错误代号'+convert(varchar,@@error) go
--4.if --格式: if <条件> begin 语句序列 end  -- else begin 语句序列 end --:说明:当语句序列只有一句时,begin end可省略 --根据产品的名称,输出对应价格等级
declare @price money
declare @pname varchar(10) set @pname='Chai'
select @price=unitprice from products where productname=@pname
if @price>50
   print ''
else if @price>30
   print '通常'
else 
   print '便宜'
go
--5.case end --格式:CASE  -- WHEN 条件1 THEN 结果1 -- WHEN 条件2 THEN 结果2 -- …… -- ELSE 其余结果 --END
declare @week int
declare @weekStr varchar(6) set @week=2--星期一
set @weekStr= case
                when @week=1 then '星期一'
                when @week=2 then '星期二'
                when @week=3 then '星期三'
                else '星期天'
              end
print @weekStr
go

select productid,productname,unitprice, case 
     when unitprice>50 then ''
     when unitprice>30 then '通常'
     else '便宜'
  end
 as '等级' 
from products go

--6.while循环 --格式:WHILE <条件> -- BEGIN -- 语句1 -- 语句2 -- …… -- BREAK -- END
declare @i int
set @i=1
while @i<=10
begin
   print @i
   if @i=5
      break; set @i=@i+1
end
go

--为了本次考试更好,进行必定的提分, --确保每人的总分都达到200分以上,提分规则很简单, --先给每人加2分,看是否都经过,若是没有所有经过, --每人再加2分,再看是否达到200分,如此反复提分,直到全部人都经过为止。
declare @i int --记录加的次数
declare @price money
set @i=0
while
begin
    select @price=min(unitprice) from products if @price>=30
       break
    update products set unitprice=unitprice+2
    set @i=@i+1
end
go

declare @i int --记录加的次数
set @i=0
while 1=1
begin
    if not exists(select * from products where unitprice<30) break
    update products set unitprice=unitprice+2
    set @i=@i+1
end
go
相关文章
相关标签/搜索