sql-server – 具有多个输出参数的SQL Server 2008存储过程

前端之家收集整理的这篇文章主要介绍了sql-server – 具有多个输出参数的SQL Server 2008存储过程前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个存储过程如下:
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

在程序结束时.

原文链接:https://www.f2er.com/mssql/76662.html

猜你在找的MsSQL相关文章