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
相關文章
相關標籤/搜索