diff --git "a/28\350\242\201\350\264\265\346\243\256/\344\275\234\344\270\232/2022-1007\345\255\230\345\202\250\350\277\207\347\250\213\344\275\234\344\270\232.sql" "b/28\350\242\201\350\264\265\346\243\256/\344\275\234\344\270\232/2022-1007\345\255\230\345\202\250\350\277\207\347\250\213\344\275\234\344\270\232.sql" new file mode 100644 index 0000000000000000000000000000000000000000..12fbdd0e416ca354017a830f2559d785979f1f19 --- /dev/null +++ "b/28\350\242\201\350\264\265\346\243\256/\344\275\234\344\270\232/2022-1007\345\255\230\345\202\250\350\277\207\347\250\213\344\275\234\344\270\232.sql" @@ -0,0 +1,76 @@ +use BankTest +go +--定义存储过程实现查询出账户余额最低的银行卡账户信息,显示银行卡号,姓名,账户余额 +create proc func_money +as + select b.CardNo 银行卡号 ,a.RealName 姓名,b.CardMoney 账户余额 from BankCard b join AccountInfo a on a.AccountId=b.AccountId + where CardMoney=(select min(CardMoney) from BankCard) + + exec func_money +-- 模拟银行卡存钱操作,传入银行卡号,存钱金额,实现存钱操作 +go +create proc proc_cun +@cardid varchar(20), +@money money +as + update BankCard set CardMoney=CardMoney+@money where CardNo=@cardid + insert into CardExchange(CardNo,MoneyInBank,MoneyOutBank,ExchangeTime) values (@cardid,@money,0,GETDATE()) + + exec proc_cun'6225125478544587',1000 +-- 模拟银行卡取钱操作,传入银行卡号,取钱金额,实现取钱操作,取钱成功,返回1,取钱失败返回-1 +go +create proc proc_mon +@cardid varchar(20), +@money money +as + update BankCard set CardMoney=@money where CardNo=@cardid + insert into CardExchange(CardNo,MoneyInBank,MoneyOutBank,ExchangeTime) values (@cardid,0,@money,GETDATE()) + if @@ERROR<> 0 + return 1 + else + return -1 + +exec proc_mon'6225125478544587',1000 + + +go +-- **查询出某时间段的银行存取款信息以及存款总金额**,取款总金额,传入开始时间,结束时间,显示存取款交易信息的同时,返回存款总金额,取款总金额。 +create proc proc_times +@begintime smalldatetime, +@overtime smalldatetime, +@cunqian money output, +@quqian money output +as + declare @begin smalldatetime,@over smalldatetime,@cun money,@qu money + select @cun=sum(b.CardMoney),@qu=sum(CardMoney) from BankCard b join CardExchange c on c.CardNo=b.CardNo where ExchangeTime between @begin+'00:00:00' and @over+'23:59:59' +go + declare @begin smalldatetime,@over smalldatetime,@cun money,@qu money + exec proc_times '2022-09-20','2022-09-20',@cun output,@qu output + select @cun,@qu + +-- **密码升级**,传入用户名和密码,如果用户名密码正确,并且密码长度<8,自动升级成8位密码 +go +create proc yonghu +@zhanghao varchar(20), +@passward varchar(20) output +as + if not exists(select * from BankCard where @zhanghao=CardNo and @passward=CardPwd) + set @passward='账号或密码错误' + else + begin + if len(@passward)<8 + begin + declare @len int=8-len(@passward) + declare @aa int =1 + while @aa<=@len + begin + set @passward = @passward+cast(floor(rand()*10)as varchar(1)) + set @aa=@aa+1 + end + update BankCard set CardPwd= @passward,CardNo=@zhanghao + end + end +go +declare @passward varchar(20)='123456' +exec yonghu'32254526541544555',@passward output +select @passward diff --git "a/28\350\242\201\350\264\265\346\243\256/\347\254\224\350\256\260/2022-1007\345\255\230\345\202\250\350\277\207\347\250\213\347\254\224\350\256\260.txt" "b/28\350\242\201\350\264\265\346\243\256/\347\254\224\350\256\260/2022-1007\345\255\230\345\202\250\350\277\207\347\250\213\347\254\224\350\256\260.txt" new file mode 100644 index 0000000000000000000000000000000000000000..ec8ca8cd5402ca0ffeadf8a463ccc9af06af8533 --- /dev/null +++ "b/28\350\242\201\350\264\265\346\243\256/\347\254\224\350\256\260/2022-1007\345\255\230\345\202\250\350\277\207\347\250\213\347\254\224\350\256\260.txt" @@ -0,0 +1,96 @@ +##### 鑷畾涔夊瓨鍌ㄨ繃绋 + +瀛樺偍杩囩▼锛氬凡棰勭紪璇戜负涓涓彲鎵ц杩囩▼鐨勪竴涓垨澶氫釜SQL璇彞鐨勯泦鍚堛 + +**鍒涘缓瀛樺偍杩囩▼** + +1.娌℃湁杈撳叆鍙傛暟锛屾病鏈夎緭鍑哄弬鏁扮殑瀛樺偍杩囩▼銆 + +```sql +create proc <瀛樺偍杩囩▼鍚嶇О> +as + +go +``` + + +2.鏈夎緭鍏ュ弬鏁帮紝娌℃湁杈撳嚭鍙傛暟鐨勫瓨鍌ㄨ繃绋 + +```sql +create proc <瀛樺偍杩囩▼鍚嶇О> +<鍙橀噺1> <鏁版嵁绫诲瀷> +<鍙橀噺2> <鏁版嵁绫诲瀷> +... +as + +go + + +3.鏈夎緭鍏ュ弬鏁帮紝娌℃湁杈撳嚭鍙傛暟锛屼絾鏄湁杩斿洖鍊肩殑瀛樺偍杩囩▼锛堣繑鍥炲煎繀椤绘暣鏁帮級銆 + +```sql +create proc <瀛樺偍杩囩▼鍚嶇О> +<鍙橀噺1> <鏁版嵁绫诲瀷> +<鍙橀噺2> <鏁版嵁绫诲瀷> +... +as + +return 鏁存暟 +go +``` + +4.鏈夎緭鍏ュ弬鏁帮紝鏈夎緭鍑哄弬鏁扮殑瀛樺偍杩囩▼ & 涓涓彉閲忓叿澶囧悓鏃惰緭鍏ヨ緭鍑哄弬鏁扮殑瀛樺偍杩囩▼ + +```sql +create proc <瀛樺偍杩囩▼鍚嶇О> +<鍙橀噺1> <鏁版嵁绫诲瀷> output +<鍙橀噺2> <鏁版嵁绫诲瀷> output +... +as + +return 鏁存暟 +go +``` + + +**鎵ц瀛樺偍杩囩▼** + +```sql +--鏃犲弬 +exec <瀛樺偍杩囩▼鍚嶇О> +--甯﹀弬 +exec <瀛樺偍杩囩▼鍚嶇О> <褰㈠弬1>,<褰㈠弬2>,... +--甯﹀弬甯﹁繑鍥炲 +declare @鍙橀噺 +exec @鍙橀噺 = <瀛樺偍杩囩▼鍚嶇О> <褰㈠弬1>,<褰㈠弬2>,... +--鏈夎緭鍏ュ弬鏁帮紝鏈夎緭鍑哄弬鏁扮殑瀛樺偍杩囩▼ +declare @鍙橀噺 +exec <瀛樺偍杩囩▼鍚嶇О> <褰㈠弬1>,<褰㈠弬2>,@鍙橀噺 output +--涓涓彉閲忓悓鏃跺叿澶囪緭鍏ヨ緭鍑哄姛鑳 +declare @鍙橀噺 <鏁版嵁绫诲瀷> = 鍊 +exec <瀛樺偍杩囩▼鍚嶇О> <褰㈠弬1>,<褰㈠弬2>,@鍙橀噺 output +``` + + +**鍒犻櫎瀛樺偍杩囩▼** + +```sql +drop procedure <瀛樺偍杩囩▼鍚嶇О> +``` + +***瀛樺偍杩囩▼鐨勪紭鍔e娍*** + +浼樺娍锛氭彁楂樻ц兘锛岄檷浣庣綉缁滃紑閿锛屼究浜庤繘琛屼唬鐮佺Щ妞嶏紝鏈夋洿寮虹殑瀹夊叏鎬 + +鍔e娍锛氫粬闇瑕佷笓闂ㄧ殑鏁版嵁搴撳紑鍙戜汉鍛樼淮鎶わ紝璁捐閫昏緫鍙樻洿锛屼慨鏀瑰瓨鍌ㄨ繃绋嬫病鏈塻ql鐏垫椿 + + +***甯歌鐨勭郴缁熷瓨鍌ㄨ繃绋*** + +exec sp_databases 鏌ョ湅鏁版嵁搴 + +exec sp_tables 鏌ョ湅琛 + +exec sp_columns 銆婅〃鍚嶃 鏌ョ湅鏁版嵁琛ㄧ殑鍒 + +exec sp_stored_procedures 鏌ョ湅瀛樺偍杩囩▼