SQL Server—存储过程(输出参数)
接上一节内容
举例4:有输入参数,有输出参数的存储过程
查询出某时间段的银行存取款信息以及存款总金额、取款总金额
传入开始时间,结束时间,显示存取款交易信息的同时,返回存款总金额、取款总金额。
--创建存储过程
create procedure proc_selectExChange
@start varchar(20), --开始时间
@end varchar(20), --结束时间
@sumIn money output, --存款总金额
@sumOut money output --取款总金额
as
select @sumIn = (select sum(MoneyInBank) from CardExchange
where ExchangeTime between @start + ' 00:00:00' and @end + ' 23:59:59') --注意这里的时间前面有个空格
select @sumOut = (select sum(MoneyOutBank) from CardExchange
where ExchangeTime between @start + ' 00:00:00' and @end + ' 23:59:59') --注意这里的时间前面有个空格
select * from CardExchange
where ExchangeTime between @start + ' 00:00:00' and @end + ' 23:59:59' --注意这里的时间前面有个空格
go
--调用存储过程
declare @sumInAll money
declare @sumOutAll money
exec proc_selectExChange '2020-1-1','2020-12-11',@sumInAll output,@sumOutAll output
select @sumInAll
select @sumOutAll
--注意:
--1、第三个、第四个参数是一个输出参数,不是从外面传进来东西,是没有值的,不能直接写常量。我们应该在外面定义一个变量,来接收它的结果,然后保存。所以这里定义一个变量来保存。
--2、如果调用存储过程时传入了一个变量,而这个变量是代表输出的含义,此时在变量的后面要加上output,这时候才能把输出的值保存到变量里面去。
/*
procedure:[prə'siːdʒə] 程序 / 手续 / 步骤 / 外科手术
proc_selectExChange:定义的存储过程的名字
*/
举例4:具有同时输入输出参数的存储过程
密码升级,传入卡号和密码,如果卡号密码正确,并且密码长度<8,自动升级成8位密码。
--创建存储过程
create procedure procPwdUpgrade
@CardNo nvarchar(20), --卡号
@pwd nvarchar(20) output --卡号
as
if not exists(select * from BankCard where CardNo = @CardNo and CardPwd = @pwd)
set @pwd="
else
begin
if len(@pwd) < 8
begin
declare @len int = 8 - len(@pwd)
declare @i int = 1
while @i <= @len
begin
set @pwd = @pwd + cast(floor(rand()*10) as varchar(1))
set @i = @i + 1
end
update BankCard set CardPwd = @pwd where CardNo = @CardNo
end
end
go
--调用存储过程
declare @pwd nvarchar(20) = '123456' --这里和上一个例子不同的是,这里给了一个特定的值
exec procPwdUpgrade '6225125478544587',@pwd output
select @pwd
--判断参数是输入参数还是输出参数,关键看在存储过程中怎么调用这个参数。
/*
rand():随机生成一个0到1之间的小数
floor():舍尾取整
floor(rand()*10):随机生成一个0到9之间的整数(包含0和9)
*/
1.本站所有资源收集于互联网和用户上传,如有侵权请联系客服删除;
2.本站不保证所提供下载资源的准确性、安全性和完整性,请自行测试;
3.资源仅供学习交流使用,版权归原作者所有,请在下载后24小时之内删除;
4.如用于商业或非法用途实属个人行为,与本站无关,一切后果由用户自负;
5.本站提供的源码、主题模板、插件等资源,都不包含技术服务,请大家谅解;
6.本站所设置的资源售价只是用于赞助,收取费用仅维持本站的日常运营所需;
7.如果您有好的源码或者教程,请至个人中心发布资源,将有积分奖励和额外收入;
8.本站默认解压密码:www.ittiantang.com,如有链接无法下载,请联系管理员处理。
IT天堂 » SQL Server—存储过程(输出参数)
2.本站不保证所提供下载资源的准确性、安全性和完整性,请自行测试;
3.资源仅供学习交流使用,版权归原作者所有,请在下载后24小时之内删除;
4.如用于商业或非法用途实属个人行为,与本站无关,一切后果由用户自负;
5.本站提供的源码、主题模板、插件等资源,都不包含技术服务,请大家谅解;
6.本站所设置的资源售价只是用于赞助,收取费用仅维持本站的日常运营所需;
7.如果您有好的源码或者教程,请至个人中心发布资源,将有积分奖励和额外收入;
8.本站默认解压密码:www.ittiantang.com,如有链接无法下载,请联系管理员处理。
IT天堂 » SQL Server—存储过程(输出参数)
常见问题FAQ
- IT天堂的会员权益只能通过充值获得吗?
- 您可以通过签到功能获得积分,用积分兑换会员权益。
- 网站上的VIP资源只能通过充值购买吗?
- 您可以通过每日签到获得积分,使用积分直接购买VIP资源。