sql server中的三種函數

--階段一  創建和使用標量值函數、多語句函數

--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') '還款月份'

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章