【问题标题】:How to execute stored procedure in SQL Server with output paramter in Sequelize?如何在 Sequelize 中使用输出参数在 SQL Server 中执行存储过程?
【发布时间】:2019-07-18 04:16:43
【问题描述】:

当我尝试使用Sequelize 中的输出参数执行存储过程时出现错误:

Executing (default): spsPerson @PersonID=0 OUTPUT, @Firstname=N'test', @Lastname=N'test'

UnhandledPromiseRejectionWarning: SequelizeDatabaseError: 将常量传递给存储过程时无法使用 OUTPUT 选项。

这是代码:

  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

我不关心输出参数,只想执行这个存储过程而不改变它。

【问题讨论】:

    标签: node.js sql-server sequelize.js


    【解决方案1】:

    我暂时不测试它。你试试看,让我知道

    定义商店功能:

    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 中的查询:

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

    【讨论】:

      【解决方案2】:

      问题在于 OUTPUT 参数,您为其分配了 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'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-02
        • 2016-11-02
        • 1970-01-01
        • 2017-11-02
        • 2011-05-07
        • 1970-01-01
        相关资源
        最近更新 更多