--階段一 創建和使用標量值函數、多語句函數
--1.創建一個標量值函數,根據用戶姓名查詢該用戶一卡通的餘額
--2.創建一個多語句表值函數,根據賬戶姓名顯示該用戶的一卡通交易記錄
--創建一個變量值函數
use Bank
go
create function getBalanceByName(@in_userName varchar(64))
returns float
as
begin
declare @balance float
select @balance = balance from all_purpose_card,account where ACCOUNT.ACCOUNT_ID=ALL_PURPOSE_CARD.ACCOUNT_ID
and ACCOUNT.ACCOUNT_NAME=@in_userName
return @balance
end
go
--查看函數的定義文本
exec sp_helptext 'dbo.getBalanceByName'
--調用標量值函數時需要添加dbo.
select dbo.getBalanceByName('陸遜') as '餘額'
--創建一個多表值函數,根據賬戶姓名顯示該賬戶一卡通的交易記錄
use Bank
go
create function findExchangeByName(@accountName varchar(20))
--定義返回表結構
returns @detailsTable table
(
exdepost float,
exget float,
extertransfer float,
intrtransfer float,
extime datetime,
balance float
)
as
begin
--爲返回表添加內容
insert into @detailsTable select exdeposit,exget,extransfer,intransfer,extime,all_purpose_card.BALANCE
from all_purpose_card_exchange,ACCOUNT,ALL_PURPOSE_CARD
where ALL_PURPOSE_CARD.ACCOUNT_ID=ACCOUNT.ACCOUNT_ID and ALL_PURPOSE_CARD.CARD_NUM=ALL_PURPOSE_CARD_EXCHANGE.CARD_NUM
and ACCOUNT.ACCOUNT_NAME=@accountName
return
end
go
--調用表值函數
select * from findExchangeByName('陸遜')
--練習部分
--使用信用卡消費後,需要在下一個月進行還款,銀行默認的結賬時間是每月的20號,還款時間爲下個月10號之前
--現創建一個標量值函數,通過輸入交易時間,獲得還款時間
use Bank
go
create function getBackLoanTime(@exchangeTime datetime)
returns int
as
begin
--定義還款時間
declare @payBackLoanTime datetime
--定義交易day
declare @day int
--定義交易所在的月份
declare @month int
--使用日期函數得到交易所在日
set @day=day(@exchangeTime)
if @day>20
begin
set @month=month(@exchangeTime)+1
end
else
set @month=month(@exchangeTime)
--給出還款月份,在下一個月進行還款
return @month+1
end
go
select dbo.getBackLoanTime('2012-04-12') '還款月份'
sql server中的三種函數
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.