sql-server – 具有多个输出参数的SQL Server 2008存储过程
发布时间:2020-05-24 03:57:28 所属栏目:MsSql 来源:互联网
导读:我有一个存储过程如下: ALTER PROCEDURE [dbo].[sp_web_orders_insert]( @userId int = default, @custId int = default, @orderDate datetime = default, @orderTotal money = default, @statusId int =
|
我有一个存储过程如下: 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 在程序结束时. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
