From d53c7439da643fe5a3e6fb531a327b689d5f3b0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A9=AC=E9=91=AB=E6=B6=9B?= <10033779+Q-00817@user.noreply.gitee.com> Date: Thu, 6 Oct 2022 09:03:36 +0000 Subject: [PATCH 1/3] =?UTF-8?q?=E9=87=8D=E5=91=BD=E5=90=8D=2045=E5=8F=B7?= =?UTF-8?q?=E9=A9=AC=E9=91=AB=E6=B6=9B/=E4=BD=9C=E4=B8=9A/2022-09-29?= =?UTF-8?q?=E6=B8=B8=E6=A0=87=E4=BD=9C=E4=B8=9A=20=E4=B8=BA=2045=E5=8F=B7?= =?UTF-8?q?=E9=A9=AC=E9=91=AB=E6=B6=9B/=E4=BD=9C=E4=B8=9A/2022-09-30?= =?UTF-8?q?=E6=B8=B8=E6=A0=87=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SQLQuery1.sql" | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename "45\345\217\267\351\251\254\351\221\253\346\266\233/\344\275\234\344\270\232/2022-09-29\346\270\270\346\240\207\344\275\234\344\270\232/SQLQuery1.sql" => "45\345\217\267\351\251\254\351\221\253\346\266\233/\344\275\234\344\270\232/2022-09-30\346\270\270\346\240\207\344\275\234\344\270\232/SQLQuery1.sql" (100%) diff --git "a/45\345\217\267\351\251\254\351\221\253\346\266\233/\344\275\234\344\270\232/2022-09-29\346\270\270\346\240\207\344\275\234\344\270\232/SQLQuery1.sql" "b/45\345\217\267\351\251\254\351\221\253\346\266\233/\344\275\234\344\270\232/2022-09-30\346\270\270\346\240\207\344\275\234\344\270\232/SQLQuery1.sql" similarity index 100% rename from "45\345\217\267\351\251\254\351\221\253\346\266\233/\344\275\234\344\270\232/2022-09-29\346\270\270\346\240\207\344\275\234\344\270\232/SQLQuery1.sql" rename to "45\345\217\267\351\251\254\351\221\253\346\266\233/\344\275\234\344\270\232/2022-09-30\346\270\270\346\240\207\344\275\234\344\270\232/SQLQuery1.sql" -- Gitee From 076ff996f65ae0f9b86580513772bcaab550e5d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A9=AC=E9=91=AB=E6=B6=9B?= <10033779+Q-00817@user.noreply.gitee.com> Date: Thu, 6 Oct 2022 09:03:57 +0000 Subject: [PATCH 2/3] =?UTF-8?q?=E9=87=8D=E5=91=BD=E5=90=8D=2045=E5=8F=B7?= =?UTF-8?q?=E9=A9=AC=E9=91=AB=E6=B6=9B/=E7=AC=94=E8=AE=B0/2022-09-29?= =?UTF-8?q?=E6=B8=B8=E6=A0=87=E7=AC=94=E8=AE=B0=20=E4=B8=BA=2045=E5=8F=B7?= =?UTF-8?q?=E9=A9=AC=E9=91=AB=E6=B6=9B/=E7=AC=94=E8=AE=B0/2022-09-30?= =?UTF-8?q?=E6=B8=B8=E6=A0=87=E7=AC=94=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../\346\270\270\346\240\207\347\254\224\350\256\260.md" | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename "45\345\217\267\351\251\254\351\221\253\346\266\233/\347\254\224\350\256\260/2022-09-29\346\270\270\346\240\207\347\254\224\350\256\260/\346\270\270\346\240\207\347\254\224\350\256\260.md" => "45\345\217\267\351\251\254\351\221\253\346\266\233/\347\254\224\350\256\260/2022-09-30\346\270\270\346\240\207\347\254\224\350\256\260/\346\270\270\346\240\207\347\254\224\350\256\260.md" (100%) diff --git "a/45\345\217\267\351\251\254\351\221\253\346\266\233/\347\254\224\350\256\260/2022-09-29\346\270\270\346\240\207\347\254\224\350\256\260/\346\270\270\346\240\207\347\254\224\350\256\260.md" "b/45\345\217\267\351\251\254\351\221\253\346\266\233/\347\254\224\350\256\260/2022-09-30\346\270\270\346\240\207\347\254\224\350\256\260/\346\270\270\346\240\207\347\254\224\350\256\260.md" similarity index 100% rename from "45\345\217\267\351\251\254\351\221\253\346\266\233/\347\254\224\350\256\260/2022-09-29\346\270\270\346\240\207\347\254\224\350\256\260/\346\270\270\346\240\207\347\254\224\350\256\260.md" rename to "45\345\217\267\351\251\254\351\221\253\346\266\233/\347\254\224\350\256\260/2022-09-30\346\270\270\346\240\207\347\254\224\350\256\260/\346\270\270\346\240\207\347\254\224\350\256\260.md" -- Gitee From 7d6da89275258d210d07977a54a40be60ca9bfb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A9=AC=E9=91=AB=E6=B6=9B?= <1722781630@qq.com> Date: Fri, 7 Oct 2022 12:17:30 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E7=AC=AC=E5=8D=81=E6=AC=A1=E4=BD=9C?= =?UTF-8?q?=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SQLQuery1.sql" | 110 ++++++++++++++++++ .../\345\207\275\346\225\260.txt" | 60 ++++++++++ 2 files changed, 170 insertions(+) create mode 100644 "45\345\217\267\351\251\254\351\221\253\346\266\233/\344\275\234\344\270\232/2022-10-6\345\207\275\346\225\260\344\275\234\344\270\232/SQLQuery1.sql" create mode 100644 "45\345\217\267\351\251\254\351\221\253\346\266\233/\347\254\224\350\256\260/2022-10-6\345\207\275\346\225\260\347\254\224\350\256\260/\345\207\275\346\225\260.txt" diff --git "a/45\345\217\267\351\251\254\351\221\253\346\266\233/\344\275\234\344\270\232/2022-10-6\345\207\275\346\225\260\344\275\234\344\270\232/SQLQuery1.sql" "b/45\345\217\267\351\251\254\351\221\253\346\266\233/\344\275\234\344\270\232/2022-10-6\345\207\275\346\225\260\344\275\234\344\270\232/SQLQuery1.sql" new file mode 100644 index 0000000..a7ba2a2 --- /dev/null +++ "b/45\345\217\267\351\251\254\351\221\253\346\266\233/\344\275\234\344\270\232/2022-10-6\345\207\275\346\225\260\344\275\234\344\270\232/SQLQuery1.sql" @@ -0,0 +1,110 @@ +select * from BankCard +--(1)编写一个函数求该银行的金额总和 +create function ban_sum () +returns money +as +begin +declare @money money +select @money=sum(CardMoney) from BankCard +return @money +end +select dbo.ban_sum() +drop function ban_sum +--(2)传入账户编号,返回账户真实姓名 +select * from AccountInfo +create function reeal(@sum varchar(20)) +returns @name table( +Number varchar(20), +name varchar(20) +) +as +begin +insert into @name +select AccountCode,RealName from AccountInfo where AccountCode=@sum +return +end +drop function reeal +select * from reeal('420107198905064135') +--(3)传递开始时间和结束时间,返回交易记录(存钱取钱),交易记录中包含 真实姓名,卡号,存钱金额,取钱金额,交易时间。 +select * from CardExchange +select * from AccountInfo +select * from BankCard +create function change(@start varchar(20),@end varchar(20)) +returns @record table( +realname varchar(20), +cardno varchar(20), +Inmoney money, +Outmoney money, +dealtime varchar(20) +) +as +begin +insert into @record +select realname,BankCard.CardNo,MoneyInBank,MoneyOutBank,ExchangeTime from CardExchange +left join BankCard on BankCard.CardNo=CardExchange.CardNo +left join AccountInfo on AccountInfo.AccountId=BankCard.AccountId +where ExchangeTime between @start and @end +return +end +select * from @record('') +--方案一(逻辑复杂,函数内容除了返回结果的sql语句还有其他内容,例如定义变量等): + +--(4)查询银行卡信息,将银行卡状态1,2,3,4分别转换为汉字“正常,挂失,冻结,注销”,根据银行卡余额显示银行卡等级 30万以下为“普通用户”,30万及以上为"VIP用户",分别显示卡号,身份证,姓名,余额,用户等级,银行卡状态。 + +--方案一:直接在sql语句中使用case when + +--方案二:将等级和状态用函数实现 +create function class(@myMoney int) +returns varchar(10) +as +begin + declare @result varchar(10) + if @myMoney < 3000 + set @result = '普通用户' + else + set @result = 'VIP用户' + return @result +end + + +create function Astate(@myNum int) +returns varchar(10) +as +begin + declare @result varchar(10) + if @myNum = 1 + set @result = '正常' + else if @myNum = 2 + set @result = '挂失' + else if @myNum = 3 + set @result = '冻结' + else if @myNum = 4 + set @result = '注销' + else + set @result = '异常' + return @result +end +--(5)编写函数,根据出生日期求年龄,年龄求实岁,例如: + +--​ 生日为2000-5-5,当前为2018-5-4,年龄为17岁 +--​ 生日为2000-5-5,当前为2018-5-6,年龄为18岁 +create table Emp +( + EmpId int primary key identity(1,2), --自动编号 + empName varchar(20), --姓名 + empSex varchar(4), --性别 + empBirth smalldatetime --生日 +) +insert into Emp(empName,empSex,empBirth) values('刘备','男','2008-5-8') +insert into Emp(empName,empSex,empBirth) values('关羽','男','1998-10-10') +insert into Emp(empName,empSex,empBirth) values('张飞','男','1999-7-5') +insert into Emp(empName,empSex,empBirth) values('赵云','男','2003-12-12') +insert into Emp(empName,empSex,empBirth) values('马超','男','2003-1-5') +insert into Emp(empName,empSex,empBirth) values('黄忠','男','1988-8-4') +insert into Emp(empName,empSex,empBirth) values('魏延','男','1998-5-2') +insert into Emp(empName,empSex,empBirth) values('简雍','男','1992-2-20') +insert into Emp(empName,empSex,empBirth) values('诸葛亮','男','1993-3-1') +insert into Emp(empName,empSex,empBirth) values('徐庶','男','1994-8-5') +select * from Emp + +create function outBirth(@birth ) \ No newline at end of file diff --git "a/45\345\217\267\351\251\254\351\221\253\346\266\233/\347\254\224\350\256\260/2022-10-6\345\207\275\346\225\260\347\254\224\350\256\260/\345\207\275\346\225\260.txt" "b/45\345\217\267\351\251\254\351\221\253\346\266\233/\347\254\224\350\256\260/2022-10-6\345\207\275\346\225\260\347\254\224\350\256\260/\345\207\275\346\225\260.txt" new file mode 100644 index 0000000..30da576 --- /dev/null +++ "b/45\345\217\267\351\251\254\351\221\253\346\266\233/\347\254\224\350\256\260/2022-10-6\345\207\275\346\225\260\347\254\224\350\256\260/\345\207\275\346\225\260.txt" @@ -0,0 +1,60 @@ +函数分为(1)系统函数:,(2)自定义函数(方法:将一个功能封装成可重用的函数)。 + +其中自定义函数又可以分为(1)标量值函数(返回单个值),(2)表值函数(返回查询结果) + +本文主要介绍自定义函数的使用。 + +#### 标量值函数 + +语法结构: + +``` +CREATE FUNCTION function_name(@parameter_name parameter_data_type) --(@参数名 参数的数据类型) +RETURNS date_type --返回返回值的数据类型 + +[AS] + +BEGIN + + function_body --函数体 + + RETURN 表达式; --必须要有的 + +END +``` + +#### 表值函数 + +语法结构: + +``` +create function 名称 + +([{@参数名称 参数类型[=默认值]}[,n]]) + +returns @局部变量 table(参数名 参数类型) + +[with encryption] + +[as] + +begin + +函数体 + +return 函数返回值 + +end +``` + +删除自定义函数 + +``` +DROP function 函数名 +``` + +### --总结:自定义函数 + +--1.标量值函数: 1.returns 数据类型 2.return 标量(某个值) + +--2.多语句表值函数 1.returns 表名 table(字段 数据类型) 2.只用return \ No newline at end of file -- Gitee