带输出参数的存储过程的
语法
CREATE PROCP[EDURE] 存储过程名
@参数1 数据类型=默认值 OUTPUT,
……
@参数n 数据类型=默认值 OUTPUT
AS
SQL 语句
GO --必须要加批处理的GO
--创建带输入输出参数的存储过程
/*
题目要求
向母婴用品这个类别添加一种商品,要求成功后把商品的编号输出
*/
IF EXISTS(SELECT * FROM sysobjects WHERE name='usp_InsertCommodity')
DROP PROC usp_InsertCommodity
GO
CREATE PROC usp_InsertCommodity
@SortName varchar(50),--类名别名
@CommodityName varchar(100), --商品名称
@inprice money,--进货价
@outprice money, --销售价
@Amount int,--库存量
@CommodityId int output --商品编号,输出参数
AS
--根据输入的类别名称查询类别编号
DECLARE @SortId int
SELECT @SortId=SortId FROM CommoditySort WHERE SortName=@SortId
--判断类别名称是否正确,如查@SortId为空类别名称出错,否则类别正确
IF @SortId IS NULL
BEGIN
PRINT '对不起,输入的类别不存在!'
RETURN --后面的代码无条件,退出了创建存储过程
END
--向商品信息表插入数据
INSERT INTO CommodityInfo(SortId,CommodityName,InPrice,OutPrice,Amount)
VALUES(@SortId,@CommodityId,@inprice,@outprice)
--判断错误 号是否大于0如果大于0说明插入有误
IF @@ERROR>0
BEGIN
PRINT '插入信息失败'
RETURN
END
SET @CommodityId=@@IDENTITY
GO
--使用带输入输出,参数的存储过程
--1)声明变量来调用(隐式调用,要求参数顺序与存储过程参数定义的顺序相同)
DECLARE @sortName varchar(50),@commodityName varchar(100),@inprice money,@mount int,@commodityId int
SELECT @sortName='母婴用品',@commodityName='北京母婴产品',@inprice=200,@Outprice=245,@mount=1000
EXEC usp_InsertCommodity @sortName,@commodityName,@inprice,@outprice,@mount,@commodityId output
print '添加商品成功,商品编号为:'+CONVERT(varchar(5),@commodityId)
转载于:https://blog.51cto.com/xingcheng/1743542