diff --git "a/05\345\215\240\345\277\227\346\226\260/10.7/.keep" "b/05\345\215\240\345\277\227\346\226\260/10.7/.keep" new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git "a/05\345\215\240\345\277\227\346\226\260/10.7/\345\202\250\345\255\230\350\277\207\347\250\213.sql" "b/05\345\215\240\345\277\227\346\226\260/10.7/\345\202\250\345\255\230\350\277\207\347\250\213.sql" new file mode 100644 index 0000000000000000000000000000000000000000..4493198963e11157bd3cc5af0dc06e2fc642bc63 --- /dev/null +++ "b/05\345\215\240\345\277\227\346\226\260/10.7/\345\202\250\345\255\230\350\277\207\347\250\213.sql" @@ -0,0 +1,123 @@ +use BankTest +go + +--1. 定义存储过程实现查询出账户余额最低的银行卡账户信息,显示银行卡号,姓名,账户余额 +select * from BankCard +go +-- drop proc proc_getMinMoney +create proc proc_getMinMoney +@minMoney money output +as +begin + select @minMoney = MIN(CardMoney) from BankCard + select CardNo,RealName,CardMoney from BankCard b + join AccountInfo a on a.AccountId = b.AccountId + where CardMoney = @minMoney +end +go + +declare @minMoney money +exec proc_getMinMoney @minMoney output + + + +--2. 模拟银行卡存钱操作,传入银行卡号,存钱金额,实现存钱操作 +select * from CardExchange +go +create proc proc_getInMoney +@cardNo varchar(50), +@inMoney money +as +begin + insert into CardExchange values(@cardNo,@inMoney,0,GETDATE()) + +end +go +-- +declare @cardNo varchar(50) = '6225125478544587', + @inMoney money = 8848 +exec proc_getInMoney @cardNo,@inMoney +select * from CardExchange + + + +--3. 模拟银行卡取钱操作,传入银行卡号,取钱金额,实现取钱操作,取钱成功,返回1,取钱失败返回-1 +select * from BankCard +go +-- drop proc proc_outMoney + +create proc proc_outMoney +@cardNum varchar(50), +@outMoney money, +@backNum int output +as +begin + select @backNum = (case when CardMoney >= @outMoney then 1 else -1 end) from BankCard + where CardNo = @cardNum + update BankCard set CardMoney -= @outMoney where CardNo = @cardNum +end +go +--执行 +declare @cardNum varchar(50) = '6225547854125656', +@outMoney money = 1000, +@backNum int +exec proc_outMoney @cardNum,@outMoney,@backNum output +select @backNum +select * from BankCard + + +--4. 查询出某时间段的银行存取款信息以及存款总金额**,取款总金额, +--传入开始时间,结束时间,显示存取款交易信息的同时,返回存款总金额,取款总金额。 +select * from CardExchange --交易记录 + +-- drop proc proc_getBankMessage +go +create proc proc_getBankMessage +@openTime smalldatetime, +@overTime smalldatetime, +@InSum money output, +@OutSum money output +as +begin + select @InSum = SUM(MoneyInBank),@OutSum = SUM(MoneyOutBank) from CardExchange + where ExchangeTime between @openTime and @overTime +end +go + +declare @openTime smalldatetime = '2022-09-07 14:30:00', +@overTime smalldatetime = '2022-09-27 08:19:00', +@InSum money,@OutSum money + +exec proc_getBankMessage @openTime,@overTime,@InSum output,@OutSum output +select @InSum 存款总额,@OutSum 取款总额 + + +--5. **密码升级**,传入用户名和密码,如果用户名密码正确,并且密码长度<8,自动升级成8位密码 +--(提示:随机生成 0-9 的整数: float(rand()*10)) rand():随机生成0.0-1.0的小数 float:向下取整) + +-- drop proc proc_pwd +-- update BankCard set CardPwd = '123456' where AccountId = 1 +go +create proc proc_pwd +@cardNo varchar(50), +@pwd varchar(50) +as +begin + if((select CardNo from BankCard where CardNo = @cardNo) != ' ' + and @pwd = (select CardPwd from BankCard where CardNo = @cardNo and @pwd = CardPwd)) + begin + if(len(@pwd) < 8) + begin + update BankCard set CardPwd = CONCAT(ROUND(99999+RAND()*99999,0),ROUND(RAND()*9,0),ROUND(RAND()*9,0)) where CardNo = @cardNo + end + end + else + begin + print '错误' + end +end +go +-- 执行 +declare @cardNo varchar(50) = '6225125478544587',@pwd varchar(50) = '123456' +exec proc_pwd @cardNo,@pwd +select * from BankCard \ No newline at end of file diff --git "a/05\345\215\240\345\277\227\346\226\260/10.7/\345\202\250\345\255\230\350\277\207\347\250\213.txt" "b/05\345\215\240\345\277\227\346\226\260/10.7/\345\202\250\345\255\230\350\277\207\347\250\213.txt" new file mode 100644 index 0000000000000000000000000000000000000000..6f3123bb24efa2b20e071fc3fe5a183d54944bce --- /dev/null +++ "b/05\345\215\240\345\277\227\346\226\260/10.7/\345\202\250\345\255\230\350\277\207\347\250\213.txt" @@ -0,0 +1,43 @@ +瀛樺偍杩囩▼(Stored Procedure) 浠涔堟槸瀛樺偍杩囩▼ 瀛樺偍杩囩▼鏄缂栬瘧SQL璇彞闆嗗悎锛岃繖浜涜鍙ュ瓨鍌ㄥ湪涓涓悕绉帮紙瀛樺偍杩囩▼鐨勫悕绉帮級涓嬪苟浣滀负鍗曞厓鏉ュ鐞嗐傚瓨鍌ㄨ繃绋嬩唬鏇夸簡浼犵粺鐨勯愭潯鎵цSQL璇彞鐨勬柟寮忥紝涓涓瓨鍌ㄨ繃绋嬩腑鍙互鍖呭惈鏌ヨ銆佹彃鍏ャ佸垹闄ゃ佹洿鏂扮瓑鎿嶇旱鐨勪竴绯诲垪SQL璇彞锛屽綋杩欎釜瀛樺偍杩囩▼琚皟鐢ㄦ墽琛屾椂锛岃繖浜涙搷浣滀篃浼氬悓鏃舵墽琛屻 + +灏佽濂 --> 璋冪敤 + +瀛樺偍杩囩▼鐨勫垎绫 绯荤粺瀛樺偍杩囩▼ 绯荤粺瀛樺偍杩囩▼鏄敤鏉ョ鐞哠QL Server涓庢樉绀烘湁鍏虫暟鎹簱鍜岀敤鎴风殑淇℃伅鐨勫瓨鍌ㄨ繃绋嬨 + +甯歌鐨勭郴缁熷瓨鍌ㄨ繃绋嬫湁 + +sp_databases 鍒楀嚭鏈嶅姟涓婄殑鎵鏈夋暟鎹簱 sp_helpdb --鎶ュ憡鏈夊叧鎸囧畾鏁版嵁搴撴垨鎵鏈夋暟鎹簱鐨勪俊鎭 sp_renamedb 鏇存敼鏁版嵁搴撶殑鍚嶇О sp_tables --杩斿洖褰撳墠鐜涓嬪彲鏌ヨ鐨勫璞$殑鍒楄〃 sp_columns 杩斿洖鏌愪釜琛ㄥ垪鐨勪俊鎭 sp_help --杩斿洖鏌愪釜琛ㄧ殑鎵鏈変俊鎭 sp_helpconstraint 鏌ョ湅鏌愪釜琛ㄧ殑绾︽潫 sp_helpindex --鏌ョ湅鏌愪釜琛ㄧ殑绱㈠紩 sp_stored_procedures 鍒楀嚭褰撳墠鐜涓殑鎵鏈夊瓨鍌ㄨ繃绋 sp_password --娣诲姞鎴栦慨鏀圭櫥褰曡处鎴风殑瀵嗙爜 sp_rename 閲嶅懡鍚嶅瓨鍌ㄨ繃绋 sp_helptext 鏄剧ず榛樿鍊硷紝鏈姞瀵嗙殑瀛樺偍杩囩▼銆佺敤鎴峰畾涔夌殑瀛樺偍杩囩▼銆佽Е鍙戝櫒鎴栬鍥剧殑瀹為檯鏂囨湰銆 鑷畾涔夊瓨鍌ㄨ繃绋 鍒涘缓瀛樺偍杩囩▼ + +1.娌℃湁杈撳叆鍙傛暟锛屾病鏈夎緭鍑哄弬鏁扮殑瀛樺偍杩囩▼銆 + +create proc <瀛樺偍杩囩▼鍚嶇О> as go 缁冧範锛 瀹氫箟瀛樺偍杩囩▼鏌ヨ 骞撮緞鏈灏忕殑瀛︾敓淇℃伅 + +2.鏈夎緭鍏ュ弬鏁帮紝娌℃湁杈撳嚭鍙傛暟鐨勫瓨鍌ㄨ繃绋 + +create proc <瀛樺偍杩囩▼鍚嶇О> <鍙橀噺1> <鏁版嵁绫诲瀷> <鍙橀噺2> <鏁版嵁绫诲瀷> ... as go 3.鏈夎緭鍏ュ弬鏁帮紝娌℃湁杈撳嚭鍙傛暟锛屼絾鏄湁杩斿洖鍊肩殑瀛樺偍杩囩▼锛堣繑鍥炲煎繀椤绘暣鏁帮級銆 + +create proc <瀛樺偍杩囩▼鍚嶇О> <鍙橀噺1> <鏁版嵁绫诲瀷> <鍙橀噺2> <鏁版嵁绫诲瀷> ... as return 鏁存暟 go 4.鏈夎緭鍏ュ弬鏁帮紝鏈夎緭鍑哄弬鏁扮殑瀛樺偍杩囩▼ & 涓涓彉閲忓叿澶囧悓鏃惰緭鍏ヨ緭鍑哄弬鏁扮殑瀛樺偍杩囩▼ + +create proc <瀛樺偍杩囩▼鍚嶇О> <鍙橀噺1> <鏁版嵁绫诲瀷> output <鍙橀噺2> <鏁版嵁绫诲瀷> output ... as return 鏁存暟 go 鎵ц瀛樺偍杩囩▼ + +--鏃犲弬 exec <瀛樺偍杩囩▼鍚嶇О> --甯﹀弬 exec <瀛樺偍杩囩▼鍚嶇О> <褰㈠弬1>,<褰㈠弬2>,... --甯﹀弬甯﹁繑鍥炲 declare @鍙橀噺 exec @鍙橀噺 = <瀛樺偍杩囩▼鍚嶇О> <褰㈠弬1>,<褰㈠弬2>,... --鏈夎緭鍏ュ弬鏁帮紝鏈夎緭鍑哄弬鏁扮殑瀛樺偍杩囩▼ declare @鍙橀噺 exec <瀛樺偍杩囩▼鍚嶇О> <褰㈠弬1>,<褰㈠弬2>,@鍙橀噺 output --涓涓彉閲忓悓鏃跺叿澶囪緭鍏ヨ緭鍑哄姛鑳 declare @鍙橀噺 <鏁版嵁绫诲瀷> = 鍊 exec <瀛樺偍杩囩▼鍚嶇О> <褰㈠弬1>,<褰㈠弬2>,@鍙橀噺 output 鍒犻櫎瀛樺偍杩囩▼ + +drop procedure <瀛樺偍杩囩▼鍚嶇О> 瀛樺偍杩囩▼鐨勪紭鐐 鍏佽妯″潡鍖栫▼搴忚璁 + +鎵ц閫熷害鏇村揩 + +鍑忓皯缃戠粶娴侀氶噺 + +鎻愰珮绯荤粺瀹夊叏鎬 + +瀛樺偍杩囩▼涓庡嚱鏁扮殑鍖哄埆 1.鍌ㄥ瓨杩囩▼鍙互鏈夎繑鍥炲间篃鍙互鏃犺繑鍥炲笺傚嚱鏁板繀椤绘湁杩斿洖鍊笺 + +2.瀛樺偍杩囩▼鐨勫疄鐜版瘮杈冨鏉傦紝鑰屽嚱鏁扮殑瀹炵幇姣旇緝鏈夐拡瀵规с + +3.鍌ㄥ瓨杩囩▼鍙互杈撳叆杈撳嚭鍙傛暟锛岃屽嚱鏁板彧鍙互杈撳叆鍙傛暟銆 + +4.杩囩▼鍏佽鍦ㄥ叾涓夋嫨浠ュ強DML璇彞锛岃屽嚱鏁板彧鍙互鍦ㄥ叾涓璼elect璇彞銆 + +5.鍙互鍦ㄥ瓨鍌ㄨ繃绋嬩腑璋冪敤鍑芥暟锛屼笉鍙互鍦ㄥ嚱鏁颁腑璋冪敤瀛樺偍杩囩▼銆 + +6.鍑芥暟鍙互浣滀负鏉′欢鍦ㄨ鍙ヤ腑浣跨敤锛屼絾鏄瓨鍌ㄨ繃绋嬩笉鍙互銆 \ No newline at end of file