加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

在程序结束时.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读