diff --git "a/35\351\273\204\346\237\261\350\217\230/\351\273\204\346\237\261\350\217\23035/2022-10-7 \347\254\224\350\256\260 \345\202\250\345\255\230.md.url" "b/35\351\273\204\346\237\261\350\217\230/\351\273\204\346\237\261\350\217\23035/2022-10-7 \347\254\224\350\256\260 \345\202\250\345\255\230.md.url" new file mode 100644 index 0000000000000000000000000000000000000000..29e734d213a3ec02a7ec95a1c8cc2744cab2b196 --- /dev/null +++ "b/35\351\273\204\346\237\261\350\217\230/\351\273\204\346\237\261\350\217\23035/2022-10-7 \347\254\224\350\256\260 \345\202\250\345\255\230.md.url" @@ -0,0 +1,2 @@ +[InternetShortcut] +URL=https://gitee.com/level-21-software-class-4/advanced-sql/blob/master/07%20%E5%BB%96%E6%B2%BB%E5%85%88/%E7%AC%94%E8%AE%B0/2022-10-7%20%E7%AC%94%E8%AE%B0%20%E5%82%A8%E5%AD%98.md diff --git "a/35\351\273\204\346\237\261\350\217\230/\351\273\204\346\237\261\350\217\23035/2022-10.7.sql" "b/35\351\273\204\346\237\261\350\217\230/\351\273\204\346\237\261\350\217\23035/2022-10.7.sql" new file mode 100644 index 0000000000000000000000000000000000000000..f425bdf8efbb28c7371e52db3edcd127cf16797f --- /dev/null +++ "b/35\351\273\204\346\237\261\350\217\230/\351\273\204\346\237\261\350\217\23035/2022-10.7.sql" @@ -0,0 +1,74 @@ +--1. 定义存储过程实现查询出账户余额最低的银行卡账户信息,显示银行卡号,姓名,账户余额 + create proc minmoney + @cardno varchar(50) output, + @name varchar(50) output, + @money money output + as + begin + select @cardno=CardNo,@name=RealName,@money=CardMoney from BankCard b join AccountInfo a on b.AccountId=a.AccountId + where CardMoney in (select min(cardmoney) from BankCard) + end + declare @cardno varchar(50) ,@name varchar(50) ,@money money + exec minmoney @cardno output,@name output,@money output + select @cardno,@name,@money +--2. 模拟银行卡存钱操作,传入银行卡号,存钱金额,实现存钱操作 + create proc inmoney + @incardno varchar(50), + @inmoney money + as + begin + insert into CardExchange + values (@incardno,@inmoney,0,GETDATE()) + update BankCard set CardMoney+=@inmoney where CardNo=@incardno + end + exec inmoney '6225125478544587',100000 +--3. 模拟银行卡取钱操作,传入银行卡号,取钱金额,实现取钱操作,取钱成功,返回1,取钱失败返回-1 + alter table bankcard add constraint money check(cardmoney>=0) + create proc outmoney + @outcardno varchar(50), + @outmoney money + as + begin + declare @false int=0 + update BankCard set CardMoney-=@outmoney where CardNo=@outcardno + set @false+=@@ERROR + if(@false=0) + begin + insert into CardExchange + values (@outcardno,0,@outmoney,GETDATE()) + print 1 + end + else + begin + print -1 + end + end + exec outmoney '6225125478544587',1000 +--4. **查询出某时间段的银行存取款信息以及存款总金额**,取款总金额,传入开始时间,结束时间,显示存取款交易信息的同时,返回存款总金额,取款总金额。 + create proc iomoney + @btime smalldatetime, + @etime smalldatetime + as + begin + select sum(MoneyInBank)存款总金额,sum(MoneyOutBank)取款总金额 from cardexchange where ExchangeTime>@btime and ExchangeTime<@etime + end + exec iomoney '2022-9-1','2022-10-8' +--5. **密码升级**,传入用户名和密码,如果用户名密码正确,并且密码长度<8,自动升级成8位密码 + +--(提示:随机生成 0-9 的整数: float(rand()*10)) rand():随机生成0.0-1.0的小数 float:向下取整) + create proc mima + @username varchar(50), + @password varchar(50) + as + begin + declare @password1 varchar(50), + @uname varchar(50), + @accountid int + select @accountid=AccountInfo.AccountId,@password1=CardPwd,@uname=RealName from AccountInfo join BankCard on BankCard.AccountId=AccountInfo.AccountId + where RealName=@username + if len(@password1)<8 + begin + update BankCard set CardPwd=concat(right(rand(),4),right(rand(),4)) where AccountId=@accountid + end + end + exec mima '刘备','123456' \ No newline at end of file