美文网首页
sql server 存储过程

sql server 存储过程

作者: Vergil_wj | 来源:发表于2021-07-08 07:23 被阅读0次

存储过程(procedure)是 sql 语句和流程控制语句的预编译集合。

它的作用就是具封装代码,被外部程序调用。例如 java 根据存储过程的名字,直接调用。而函数是在内部调用的。

1、没有输入参数,没有输出参数的存储过程。

create proc proc_minMoney    -- proc 也可使用 procedure
as
    select cardMoney from BankCard
go

-- 调用存储过程
exec proc_minMoney

2、有输入参数,没有输出参数的存储过程。

create proc proc_cunqian
@cardNo varchar(30),  -- 参数 cardNo
@money money  -- 参数 money
as
    update BankCard set CardMoney = CardMoney + @money
    where CardNo = @cardNo
go

-- 调用
exec proc_cunqian '622848778787344',2000

3、有输入参数,没有输出参数,但有返回值的存储过程。(返回值必须是整数)

create proc proc_cunqian
    @cardNo varchar(30),  -- 参数 cardNo
    @money money  -- 参数 money
as
    return 1
go

-- 调用
declare @result int  --声明变量
exec @result = proc_cunqian ''622848778787344',2000   -- 将返回值赋值给变量 @result
select @result  -- 打印返回值

4、有输入参数,有输出参数的存储过程。

create proc proc_selectEXChange
    @start  varchar(20), -- 开始时间
    @end  varchar(20), -- 结束时间
    @sumIn  money output,  -- 存款总金额
    @sumOut  money output  -- 取款总金额
as
    selcet @sumIn = (select sum(MoneyInBank) from CardExchange 
                        where ExchangeTime between @start + '00:00:00' and @end + '23:59:59')
    selcet @sumOut = (select sum(MoneyOutBank) from CardExchange 
                        where ExchangeTime between @start + '00:00:00' and @end + '23:59:59')
go

-- 调用
declare @sumIn money
declare @sumOut money
exec proc_selectEXChange '2021-1-1','2021-2-1',@sumIn output,@sumOut output  -- 将返回的结果放入变量中 @sumIn 和 @sumOut中,注意不要忘记加 output
select @sumIn  -- 打印结果 @sumIn
select @sumOut  -- 打印结果 @sumOut

返回值与输出参数区别:
返回值:只能返回一个值,且必须是整数。
输出参数:可以返回多个值,对数据类型没有限制。

5、具有同时输入输出参数的过程

即传入一个参数,同时再输出这个参数。

create proc proc_Pwd
    @pwd nvarchar(20) output
as
    @pwd = @pwd + '123456' 
go

-- 执行
declare @pwd = '000'
exec proc_Pwd @pwd output
select @pwd

相关文章

网友评论

      本文标题:sql server 存储过程

      本文链接:https://www.haomeiwen.com/subject/osvzyltx.html