diff --git "a/25\346\210\264\344\277\212\351\224\213/\344\275\234\344\270\232/2022.10.6\344\275\234\344\270\232--\345\207\275\346\225\260.sql" "b/25\346\210\264\344\277\212\351\224\213/\344\275\234\344\270\232/2022.10.6\344\275\234\344\270\232--\345\207\275\346\225\260.sql" new file mode 100644 index 0000000000000000000000000000000000000000..1e7e5b3aa4cd9958dc9e2f93e2ff5f48181c089c --- /dev/null +++ "b/25\346\210\264\344\277\212\351\224\213/\344\275\234\344\270\232/2022.10.6\344\275\234\344\270\232--\345\207\275\346\225\260.sql" @@ -0,0 +1,96 @@ +--(1)编写一个函数求该银行的金额总和 +create function getMoney() +returns money +as +begin + declare @money money + set @money = (select sum(CardMoney) from BankCard) + return @money +end +select dbo.getMoney() 总金额 + +--(2)传入账户编号,返回账户真实姓名 + +create function getName(@cardNo varchar(20)) +returns varchar(5) +as +begin + declare @name varchar(5) + set @name = (select a.RealName from AccountInfo a inner join BankCard b on a.AccountId = b.AccountId where b.CardNo=@cardNo) + return @name +end +select dbo.getName('6225547854125656') 姓名 + +--(3)传递开始时间和结束时间,返回交易记录(存钱取钱),交易记录中包含 真实姓名,卡号,存钱金额,取钱金额,交易时间。 +create function getCharge(@beginTime smalldatetime ,@endTime smalldatetime) +returns @Charge table(name varchar(10),cardNo varchar(20),saveMoney money,outMoney money ,getTime smalldatetime) +as +begin + insert into @Charge + select a.RealName,b.CardNo,c.MoneyInBank,c.MoneyOutBank,c.ExchangeTime from AccountInfo a inner join BankCard b on a.AccountId = b.AccountId + inner join CardExchange c on c.CardNo = b.CardNo where c.ExchangeTime between cast(@beginTime as smalldatetime) and cast(@endTime as smalldatetime) + return +end +select * from getCharge('2022-09-19 ','2022-10-29') + +--(4)查询银行卡信息,将银行卡状态1,2,3,4分别转换为汉字“正常,挂失,冻结,注销”,根据银行卡余额显示银行卡等级 30万以下为“普通用户”, +--30万及以上为"VIP用户",分别显示卡号,身份证,姓名,余额,用户等级,银行卡状态。 +create function func_getMessage(@state int,@money money) +returns @message table( + CardNo varchar(50), + CardState int, + state varchar(50), + CardMoney money, + lv varchar(50) + +) +as +begin + declare @sta varchar(50) + insert into @message + select + CardNo, + CardState, + case + when CardState = 1 then '正常' + when CardState = 2 then '挂失' + when CardState = 3 then '冻结' + else '注销' + end , + CardMoney , + case + when CardMoney < 300000 then '普通用户' + else 'VIP用户' + end + from BankCard + return +end +go +select * from func_getMessage(1,30) + +--(5)编写函数,根据出生日期求年龄,年龄求实岁,例如: +create function getAge(@Time smalldatetime) +returns int +as +begin + declare @year int = year(getdate()) + declare @month int = month(getdate()) + declare @day int = day(getdate()) + declare @age int = @year - year(@Time) + if(@month <= month(@Time)) + begin + if(@month = month(@Time)) + begin + if(@day < day(@Time)) + set @age = @year - year(@Time)-1 + end + set @age = @year - year(@Time)-1 + end + else + set @age = @year - year(@Time) + return @age +end +drop function getAge +select dbo.getAge('2003-11-08') + + diff --git "a/25\346\210\264\344\277\212\351\224\213/\347\254\224\350\256\260/2022.10.6\347\254\224\350\256\260--\345\207\275\346\225\260.md" "b/25\346\210\264\344\277\212\351\224\213/\347\254\224\350\256\260/2022.10.6\347\254\224\350\256\260--\345\207\275\346\225\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..02ea16baa5299db33069b782a270f298d5f579b1 --- /dev/null +++ "b/25\346\210\264\344\277\212\351\224\213/\347\254\224\350\256\260/2022.10.6\347\254\224\350\256\260--\345\207\275\346\225\260.md" @@ -0,0 +1,47 @@ +**sql server 鑷畾涔夊嚱鏁板垎涓轰袱绉嶇被鍨嬶細鏍囬噺鍑芥暟锛圫calar Function锛夊澹版槑琛ㄥ煎嚱鏁帮紙Multi-Statement Function锛** + +**鏍囬噺鍑芥暟**锛氭爣閲忓嚱鏁版槸瀵瑰崟涓鍊兼搷浣滐紝杩斿洖鍗曚竴鍊笺 + +```sql +CREATE FUNCTION function_name(@parameter_name parameter_data_type) --锛園鍙傛暟鍚 鍙傛暟鐨勬暟鎹被鍨嬶級 +RETURNS date_type --杩斿洖杩斿洖鍊肩殑鏁版嵁绫诲瀷 + +[AS] + +BEGIN + + function_body --鍑芥暟浣 + + RETURN 琛ㄨ揪寮; --蹇呴』瑕佹湁鐨 + +END +``` + +**澶氬0鏄庤〃鍊煎嚱鏁**锛氬畠鐨勮繑鍥炲兼槸涓涓〃锛屼絾瀹冨拰鏍囬噺鍨嬪嚱鏁颁竴鏍锋湁涓涓敤BEGIN-END 璇彞鎷捣鏉ョ殑鍑芥暟浣擄紝杩斿洖鍊肩殑琛ㄤ腑鐨勬暟鎹槸鐢卞嚱鏁颁綋涓殑璇彞鎻掑叆鐨勩 + +```sql +create function 鍚嶇О + +([{@鍙傛暟鍚嶇О 鍙傛暟绫诲瀷[=榛樿鍊糫}[,n]]) + +returns @灞閮ㄥ彉閲 table锛堝弬鏁板悕 鍙傛暟绫诲瀷锛 + +[with encryption] + +[as] + +begin + +鍑芥暟浣 + +return 鍑芥暟杩斿洖鍊 + + +``` + +鍒犻櫎鍑芥暟 + +```sql +drop function 鍑芥暟鍚 +``` +