四、流程式控制制
一、選擇分之結構
(1)某用戶銀行卡號為「6225547854125656」,該用戶執行取錢操作,取錢5000元,餘額充足則進行取錢操作,並提示”取錢成功”,否則提示「餘額不足」。
declare @balance money
select @balance = (select CardMoney from BankCard where CardNo='6225547854125656')
if @balance >= 5000
begin
update BankCard set CardMoney = CardMoney - 5000
insert into CardExchange(CardNo,MoneyInBank,MoneyOutBank,ExchangeTime)
values('6225547854125656',0,5000,GETDATE())
end
else
print '餘額不足'
(2)查詢銀行卡資訊,將銀行卡狀態1,2,3,4分別轉換為漢字「正常,掛失,凍結,註銷」,並且根據銀行卡餘額顯示銀行卡等級 30萬以下為「普通用戶」,30萬及以上為”VIP用戶”,顯示列分別為卡號,身份證,姓名,餘額,用戶等級,銀行卡狀態。
select CardNo 卡號,AccountCode 身份證,RealName 姓名,CardMoney 餘額,
case
when CardMoney < 300000 then '普通用戶'
else 'VIP用戶'
end 用戶等級,
case
when CardState = 1 then '正常'
when CardState = 2 then '掛失'
when CardState = 3 then '凍結'
when CardState = 4 then '註銷'
else '異常'
end 卡狀態
from BankCard inner join AccountInfo on BankCard.AccountId = AccountInfo.AccountId
或如下寫法:
select CardNo 卡號,AccountCode 身份證,RealName 姓名,CardMoney 餘額,
case
when CardMoney < 300000 then '普通用戶'
else 'VIP用戶'
end 用戶等級,
case CardState
when 1 then '正常'
when 2 then '掛失'
when 3 then '凍結'
when 4 then '註銷'
else '異常'
end 卡狀態
from BankCard inner join AccountInfo on BankCard.AccountId = AccountInfo.AccountId
二、循環結構
(1)循環列印1-10。
declare @i int = 1
while @i <= 10
begin
print @i
set @i = @i + 1
end
(2)循環列印九九乘法表
declare @i int = 1
declare @str varchar(1000)
while @i<=9
begin
declare @j int = 1
set @str = ''
while @j <= @i
begin
--方案一
--set @str = @str + cast(@i as varchar(2)) + '*' + cast(@j as varchar(2)) +
--'=' + cast(@i*@j as varchar(2)) + CHAR(9)
--方案二
set @str = @str + Convert(varchar(2),@i) + '*' + Convert(varchar(2),@j) +
'=' + Convert(varchar(2),@i*@j) + CHAR(9)
set @j = @j + 1
end
print @str
set @i = @i + 1
end
備註:
(1)特殊字元:製表符 CHAR(9);換行符 CHAR(10);回車 CHAR(13);
(2)循環中若出現break和CONTINUE,作用與Java,C#等語言一致。