From 8e191881e8bfdca48f4cbb230b323b1d36235ae5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E6=96=87=E9=BE=99?= <2717752887@qq.com> Date: Mon, 10 Oct 2022 03:22:00 +0000 Subject: [PATCH 1/2] =?UTF-8?q?=E7=AC=AC=E5=8D=81=E4=B8=80=E6=AC=A1?= =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E5=92=8C=E7=AC=94=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 吴文龙 <2717752887@qq.com> --- .../\344\275\234\344\270\232/SQLQuery2.sql" | 88 +++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 "17\345\220\264\346\226\207\351\276\231/\344\275\234\344\270\232/SQLQuery2.sql" diff --git "a/17\345\220\264\346\226\207\351\276\231/\344\275\234\344\270\232/SQLQuery2.sql" "b/17\345\220\264\346\226\207\351\276\231/\344\275\234\344\270\232/SQLQuery2.sql" new file mode 100644 index 0000000..f3f1d2a --- /dev/null +++ "b/17\345\220\264\346\226\207\351\276\231/\344\275\234\344\270\232/SQLQuery2.sql" @@ -0,0 +1,88 @@ +--1. 洢ʵֲѯ˻͵п˻Ϣ,ʾпţ˻ +select * from BankCard +select * from AccountInfo +create proc proc_name +as +begin + select CardNo,realname,Cardmoney from BankCard join AccountInfo on AccountInfo.AccountId=BankCard.AccountId + where Cardmoney=(select min(CardMoney)from BankCard) +end +exec proc_name +--2. ģпǮпţǮʵִǮ +select * from CardExchange +create proc proc_No +@Cardnum varchar(20), +@Inmoney money +as +begin + update BankCard set Cardmoney+=@Inmoney where CardNo=@Cardnum + insert into CardExchange(CardNo,MoneyInBank,MoneyOutBank,ExchangeTime) + values(@Cardnum,@Inmoney,0,GETDATE()) +end +exec proc_No'6225125478544587','2000' +--3. ģпȡǮпţȡǮʵȡǮȡǮɹ1ȡǮʧܷ-1 +create proc proc_GeiMoneyBank +@cardNo varchar(30), +@MoneyOutBank money +as +begin + update BankCard set CardMoney-=@MoneyOutBank where CardNo=@cardNo + if (@@ERROR!=0) + return -1 + insert into CardExchange (CardNo,MoneyInBank,MoneyOutBank,ExchangeTime) + values (@cardNo,@MoneyOutBank,0,GETDATE()) + return 1 +end + declare @MoneyOutBank int + exec @MoneyOutBank = proc_GeiMoneyBank '6225547854125656',1000 + print @MoneyOutBank + drop proc proc_GeiMoneyBan + +--4. **ѯijʱεдȡϢԼܽ**ȡܽ뿪ʼʱ䣬ʱ䣬ʾȡϢͬʱشܽȡܽ +select * from CardExchange +create proc proc_time +@Intime smalldatetime, +@Outtime smalldatetime, +@Inmoney money output, +@outmoney money output +as +begin + select @Inmoney=sum(MoneyInBank),@outmoney=sum(MoneyOutBank) from CardExchange where ExchangeTime between @Intime and @Outtime + select * from CardExchange +where ExchangeTime between @Intime and @Outtime +end + +declare @Inmoney money +declare @outmoney money +exec proc_time '2022-09-20','2022-09-20',@Inmoney output,@outmoney output +drop proc proc_time +--5. ****û룬ûȷ볤<8Զ8λ +create proc proc_out +@cardno varchar(20) , +@num varchar (20) output +as +begin + if not exists(select * from BankCard where CardNo=@cardno and CardPwd=@num) + set @num = '' + else + begin + if len(@num) < 8 + begin + declare @len int = 8- len(@num) + declare @i int = 1 + while @i <= @len + begin + + set @num = @num + cast(FLOOR(RAND()*10) as varchar(1)) + set @i = @i+1 + end + update BankCard set CardPwd = @num where CardNo=@cardno + end + end +end +go +declare @pwd nvarchar(20) = '123456' +exec proc_out '6225547854125656',@pwd output +select @pwd + +--(ʾ 0-9 float(rand()*10)) rand():0.0-1.0С float:ȡ \ No newline at end of file -- Gitee From 778b2f027f1682e089722c447e349e1bd9d18515 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E6=96=87=E9=BE=99?= <2717752887@qq.com> Date: Mon, 10 Oct 2022 03:22:27 +0000 Subject: [PATCH 2/2] =?UTF-8?q?=E7=AC=AC=E5=8D=81=E4=B8=80=E6=AC=A1?= =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E5=92=8C=E7=AC=94=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 吴文龙 <2717752887@qq.com> --- ...277\207\347\250\213(Stored Procedure).md" | 109 ++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 "17\345\220\264\346\226\207\351\276\231/\347\254\224\350\256\260/\345\255\230\345\202\250\350\277\207\347\250\213(Stored Procedure).md" diff --git "a/17\345\220\264\346\226\207\351\276\231/\347\254\224\350\256\260/\345\255\230\345\202\250\350\277\207\347\250\213(Stored Procedure).md" "b/17\345\220\264\346\226\207\351\276\231/\347\254\224\350\256\260/\345\255\230\345\202\250\350\277\207\347\250\213(Stored Procedure).md" new file mode 100644 index 0000000..696fd02 --- /dev/null +++ "b/17\345\220\264\346\226\207\351\276\231/\347\254\224\350\256\260/\345\255\230\345\202\250\350\277\207\347\250\213(Stored Procedure).md" @@ -0,0 +1,109 @@ +## 存储过程(Stored Procedure) +#### 什么是存储过程 +存储过程是**预编译**SQL语句集合,这些语句存储在一个名称(存储过程的名称)下并作为单元来处理。存储过程代替了传统的逐条执行SQL语句的方式,一个存储过程中可以包含查询、插入、删除、更新等操纵的一系列SQL语句,当这个存储过程被调用执行时,这些操作也会同时执行。 + +封装好 --> 调用 +#### 存储过程的分类 + +##### 系统存储过程 + + 系统存储过程是用来管理SQL Server与显示有关数据库和用户的信息的存储过程。 +常见的系统存储过程有 +```sql +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.没有输入参数,没有输出参数的存储过程。 +```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 <存储过程名称> +``` + +#### 存储过程的优点 +允许模块化程序设计 +执行速度更快 +减少网络流通量 +提高系统安全性 + +#### 存储过程与函数的区别 +1.储存过程可以有返回值也可以无返回值。函数必须有返回值。 +2.存储过程的实现比较复杂,而函数的实现比较有针对性。 +3.储存过程可以输入输出参数,而函数只可以输入参数。 +4.过程允许在其中选择以及DML语句,而函数只可以在其中select语句。 +5.可以在存储过程中调用函数,不可以在函数中调用存储过程。 +6.函数可以作为条件在语句中使用,但是存储过程不可以。 \ No newline at end of file -- Gitee