创建带输出参数的存储过程

Posted zhangxudong-cnblogs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了创建带输出参数的存储过程相关的知识,希望对你有一定的参考价值。

创建带输出参数的存储过程

语法:

create proc 存储过程名

  @参数1 数据类型=默认值 output,

  @参数2 数据类型=默认值 output

as 

  sql语句

go

 

例子:

 1 --创建带输入输出参数的存储过程
 2 /*
 3 题目要求
 4 向母婴用品这个类添加一种商品,要求成功后把商品的编号输出
 5 */
 6 
 7 use E_Market
 8 go
 9 
10 if exists(select * from sysobjects where name=usp_InsertCommodity)
11 drop proc usp_InsertCommodity
12 go
13 create proc usp_InsertCommodity
14     @SortName varchar(50),  --类别名称
15     @CommodityName varchar(100),  --商品名称
16     @inprice money,   --进货价
17     @outprice money,  --销售价
18     @Amount int,   --库存liang
19     @CommodityId int output   --商品编号,输出参数
20 as
21     --根据输入的类别名称查询类别编号
22     declare @SortId int
23     select @SortId=SortId from CommoditySort where SortName=@SortName
24     --判断类别名称是否正确,
25     if @SortId is null
26         begin
27             print 对不起,输入的类别不存在!
28             return  --后面的代码无条件,退出了创建的存储过程
29         end
30     --向商品信息表插入数据
31     insert into CommodityInfo(SortId,CommodityName,InPrice,OutPrice,Amount)
32     values(@SortId,@CommodityName,@inprice,@outprice,@Amount)
33     --判断错误号是否大于0如果大于0说明插入有误
34     if @@ERROR >0
35         begin
36             print 插入信息失败!
37             return
38         end
39     set @CommodityId=@@IDENTITY
40 go
41 
42 --使用带输入输出参数的存储过程
43 --1)声明变量来调用(隐式调用,要求参数的顺序与存储过程参数的定义的顺序相同)
44 declare @sortName varchar(50), @commodityName varchar(100),
45         @inprice money,@outprice money, @amount int, @commodityId int
46 select @sortName=母婴用品,@commodityName=星飞帆1段, @inprice=100, @outprice=245,@amount=1000
47 exec usp_InsertCommodity @sortName,@commodityName,@inprice,@outprice,@amount,@commodityId output
48 print添加商品成功,商品编号为: + convert(varchar(5), @commodityId)
49 --检测插入的信息
50 select * from CommodityInfo

 

以上是关于创建带输出参数的存储过程的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server存储过程中使用表值作为输入参数示例

SQL一个带参数的存储过程写法

SQL 001.02存储过程创建存储过程(create proc)带输出参数的存储过程执行存储过程(exec)

在PLSQL中,存储过程的输出参数最大支持多大

Oracle带输入输出参数的存储过程

mybatis 调用mysql存储过程 带输出输入参数