--阶段一 创建和使用标量值函数、多语句函数
--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中的三种函数
最新推荐文章于 2023-03-19 00:17:39 发布