如何确定T-SQL查询中的rowsAffected数组元素?

时间:2018-11-01 21:24:46

标签: node.js sql-server

我有一个存储过程,可以执行该过程以插入来自NodeJ的数据,该过程返回一个值为rowsAffected的值。 rowsAffected是一个数组,在这种情况下为3,是否有任何文档确定此数组的逻辑?

我正在尝试确定已更新的行,我的最佳猜测是数组中的第二个元素,第一个是NewID(),第二个是实际的Insert,第三个是SELECT @guid,我是正确的还是我想念什么吗?

Create PROCEDURE sp_FarmFollowUp_INS
    (@p_notes_guid     VARCHAR(50),
     @p_property_guid  VARCHAR(50),
     @p_contact_name   VARCHAR(150),
     @p_contact_date   DATETIME,
     @p_contact_type   VARCHAR(50),
     @p_contact_email  VARCHAR(250),
     @p_contact_phone  VARCHAR(20),
     @p_contact_reason VARCHAR(50),
     @p_notes          VARCHAR(1000),
     @p_created_by     VARCHAR(50))
AS

declare @guid Varchar(50)
set @guid  = NEWID()

INSERT INTO dbo.tbl_FarmFollowUp    (
    guid,
    notes_guid,
    property_guid,
    contact_name,
    contact_date,
    contact_type,
    contact_email,
    contact_phone,
    contact_reason,
    notes,
    created_by,
    created_on)
VALUES  
(
    @guid,
    @p_notes_guid,
    @p_property_guid,
    @p_contact_name,
    @p_contact_date,
    @p_contact_type,
    @p_contact_email,
    @p_contact_phone,
    @p_contact_reason,
    @p_notes,
    @p_created_by,
    getDate()
)

SELECT @guid as FollowUpiId

所以这将返回以下结果

{ recordsets: [ [ [Object] ] ],
recordset: [ { FollowUpiId: '2839D43D-CF9E-466D-B512-1DCD73833380' } ],
output: {},
  rowsAffected: [ 1, 1, 1 ],
returnValue: 0 }

1 个答案:

答案 0 :(得分:1)

您的存储过程中有三个单独的查询-一个用于设置GUID(受影响的一行),一个INSERT(影响一行)和一个SELECT返回GUID(影响一行)。因此,您具有三个“受影响的行”值。

如果要关闭该阵列,请添加:

SET NOCOUNT ON

作为存储过程的第一行。