Node.js 如何使用Sequelize中的输出参数在SQL Server中执行存储过程?

Node.js 如何使用Sequelize中的输出参数在SQL Server中执行存储过程?,node.js,sql-server,sequelize.js,Node.js,Sql Server,Sequelize.js,在Sequelize中尝试使用输出参数执行存储过程时出错: Executing (default): spsPerson @PersonID=0 OUTPUT, @Firstname=N'test', @Lastname=N'test' UnhandledPromisejectionWarning:SequelizeDatabaseError:向存储过程传递常量时无法使用输出选项 代码如下: seq.query( 'spsPerson @PersonID=:PersonID OUT

Sequelize
中尝试使用输出参数执行存储过程时出错:

Executing (default): spsPerson @PersonID=0 OUTPUT, @Firstname=N'test', @Lastname=N'test'
UnhandledPromisejectionWarning:SequelizeDatabaseError:向存储过程传递常量时无法使用输出选项

代码如下:

  seq.query(
    'spsPerson @PersonID=:PersonID OUTPUT, @Firstname=:firstname, @Lastname=:lastname,
    {
      type: seq.QueryTypes.SELECT,
      replacements: {
        PersonID: 0,
        Firstname: 'test',
        Lastname: 'test'
      },
    }
  );
这是我的存储过程:

SET ANSI_NULLS OFF
GO

SET QUOTED_IDENTIFIER OFF
GO

CREATE PROCEDURE [dbo].[spsPerson]
    @PersonID INT OUTPUT,
    @Firstname VARCHAR(50),
    @Lastname VARCHAR(255)
AS
    INSERT INTO PersonTable (Firstname,  Lastname)
    VALUES (@Firstname,  @Lastname)

    SET  @PersonID  = SCOPE_IDENTITY()
GO

我不关心输出参数,只想在不更改它的情况下执行此存储过程。

问题在于输出参数,您给它赋值为0,这导致了问题

这就是如何在TSQL中执行它,以获得变量的结果
@results

declare @results int;
exec dbo.spsPerson @results OUTPUT, @Firstname=N'test', @Lastname=N'test'
select @results;
如果你根本不在乎结果:

exec dbo.spsPerson NULL, @Firstname=N'test', @Lastname=N'test'

我现在不测试它。你试过让我知道吗

定义存储功能:

SET ANSI_NULLS OFF
GO

SET QUOTED_IDENTIFIER OFF
GO

CREATE PROCEDURE [dbo].[spsPerson]
    @Firstname VARCHAR(50),
    @Lastname VARCHAR(255)
AS
    INSERT INTO PersonTable (Firstname,  Lastname)
    VALUES (@Firstname,  @Lastname)

    return (SELECT IDENT_CURRENT('PersonTable'))
GO
sequelize
          .query('CALL spsPerson (:Firstname, :Lastname)', 
                {replacements: { Firstname: 'fistname', Lastname: 'lastname' }})
          .then(v=>console.log(v));
在sequelize中查询:

SET ANSI_NULLS OFF
GO

SET QUOTED_IDENTIFIER OFF
GO

CREATE PROCEDURE [dbo].[spsPerson]
    @Firstname VARCHAR(50),
    @Lastname VARCHAR(255)
AS
    INSERT INTO PersonTable (Firstname,  Lastname)
    VALUES (@Firstname,  @Lastname)

    return (SELECT IDENT_CURRENT('PersonTable'))
GO
sequelize
          .query('CALL spsPerson (:Firstname, :Lastname)', 
                {replacements: { Firstname: 'fistname', Lastname: 'lastname' }})
          .then(v=>console.log(v));