存储过程在范围标识上返回0

时间:2019-01-07 19:23:51

标签: c# sql-server

我在一个旧项目上使用了相同的过程,并且已经运行了一段时间,所以我无法弄清楚这个问题是什么以及为什么插入时它返回0。

const themes = ['dark-theme.css', 'light-theme.css'];
const head = document.body.parentElement.firstElementChild;
const link = document.createElement('link');
link.setAttribute('href', process.env.BASE_URL + themes[0]);
link.setAttribute('id', themes[0]); // set id so we can remove it later
head.appendChild(link);

这是我称之为程序的地方

IF OBJECT_ID('dbo.spInsertArtigo') IS NOT NULL
    DROP PROCEDURE spInsertArtigo
GO

CREATE PROCEDURE spInsertArtigo
    @IdUser INT,
    ----- hArtigos -----
    @MotivoCriacao NVARCHAR(100) = NULL,
    @CodeRequest TINYINT,
    @Cliente TINYINT,
    @ReferenciaCliente NVARCHAR(50),
    @ReferenciaInterna NVARCHAR(7),
    @Indice NVARCHAR(10),
    @Projecto NVARCHAR(50),
    @Desenho NVARCHAR(50),
    @CadenciaMensal INT,
    @NumCOMDEV NVARCHAR(50),
    @QTDLancamentoFormas INT,
    @CapacidadeReal NVARCHAR(20) = NULL,
    @Observacoes NVARCHAR(100) = NULL,
    ----- hCaixa -----
    @TipoCaixa NVARCHAR(50) = NULL,
    @QTDPecasCaixa INT = NULL,
    @UnidadeProducao NVARCHAR(50) = NULL,
    @CelulaProducao NVARCHAR(50) = NULL,
    @Peso FLOAT,
    @NumKanbansProducao INT = NULL,
    ----- hMetodologiaProducao
    @TipoMetodologia nchar(3) = NULL,
    @QTDMetodoProducao INT = NULL,

    @ID INT = NULL OUTPUT
AS
BEGIN
    SET NOCOUNT ON

    BEGIN
        INSERT INTO hArtigos (MotivoCriacao, CodeRequest, Cliente, ReferenciaCliente, ReferenciaInterna, Indice, Projecto, Desenho,
                              CadenciaMensal, NumCOMDEV, QTDLancamentoFormas, CapacidadeReal, Observacoes, IdUser)
        VALUES (@MotivoCriacao, @CodeRequest, @Cliente, @ReferenciaCliente, @ReferenciaInterna, @Indice, @Projecto, @Desenho,
                @CadenciaMensal, @NumCOMDEV, @QTDLancamentoFormas, @CapacidadeReal, @Observacoes, @IdUser)

        INSERT INTO hCaixa (TipoCaixa, QTDPecasCaixa, UnidadeProducao, CelulaProducao, Peso, NumKanbansProducao, IdArtigo)
        VALUES (@TipoCaixa, @QTDPecasCaixa, @UnidadeProducao, @CelulaProducao, @Peso, @NumKanbansProducao, SCOPE_IDENTITY())

        INSERT INTO hMetodologiaProducao(TipoMetodologia, QTDMetodoProducao, IdArtigo) 
        VALUES (@TipoMetodologia, @QTDMetodoProducao, SCOPE_IDENTITY())

        INSERT INTO hData(DataCriacao, DataAlteracao, IdArtigo)
        VALUES (GETDATE(), GETDATE(), SCOPE_IDENTITY())

        SELECT @ID = SCOPE_IDENTITY()
    END
END

我认为一切看起来都很好...过程与其他程序完全相同,而且我认为C#代码没有任何问题

1 个答案:

答案 0 :(得分:4)

您需要获取输出参数@ID的值,而不是获取ExecuteScalar()的RETURN值