sql-server – 具有多个输出参数的SQL Server 2008存储过程
发布时间:2020-12-12 07:28:10 所属栏目:MsSql教程 来源:网络整理
导读:我有一个存储过程如下: ALTER PROCEDURE [dbo].[sp_web_orders_insert]( @userId int = default,@custId int = default,@orderDate datetime = default,@orderTotal money = default,@statusId int = default,@orderReference varchar(50) = default,@custRe
我有一个存储过程如下:
ALTER PROCEDURE [dbo].[sp_web_orders_insert] ( @userId int = default,@custId int = default,@orderDate datetime = default,@orderTotal money = default,@statusId int = default,@orderReference varchar(50) = default,@custReference varchar(50) = default,@order_ID INT output,@orderReferenceOutput varchar(50) output ) AS SET NOCOUNT OFF; INSERT INTO [web_orders] ([user_ID],[cust_ID],[orderDate],[orderTotal],[statusId],[orderReference],[custReference]) VALUES (@userId,@custId,@orderDate,@orderTotal,@statusId,'PLC' + REPLICATE('0',(7 - LEN((select MAX(order_ID) from web_orders)))) + CAST((select(max(order_ID)+1) from web_orders) AS VARCHAR(5)),@custReference); SELECT @order_ID = @@IDENTITY RETURN @order_ID SELECT @orderReferenceOutput = 'PLC' + REPLICATE('0',(7 - LEN((select MAX(order_ID) from web_orders)))) + CAST((select(max(order_ID)+1) from web_orders) AS VARCHAR(5)) RETURN @orderReferenceOutput 由于某种原因,第二个输出参数@orderReferenceOutput不返回任何内容.第二个输出参数的目的是检索刚刚插入数据库的列. 解决方法在第一个 RETURN“无条件退出查询或过程”之后,过程执行结束.RETURN @order_ID 相反,请考虑将两个值作为一个记录集返回 SELECT @order_ID AS OrderID,@orderReferenceOutput AS OrderReference 在程序结束时. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |