Процедура или функция ожидает параметр, который не был указан, даже если он указан - PullRequest
0 голосов
/ 11 июня 2019

Здравствуйте, я не могу обернуть голову, почему я получаю сообщение об ошибке, говорящее, что этот SP ожидает @id, который не был дан, когда он дан достаточно ясно.Вот как выглядит код

public Task<bool> InsertMessage(Message msg)
        {
            return CallDatabase(async (connection) =>
            {
                var affectedows = await connection.ExecuteAsync(
                    "messages_insert",
                    new
                    {
                        msg.Id,
                        msg.Group,
                        msg.GroupUserId,
                        msg.userId,
                        msg.StartTime,
                        msg.FinishTime
                    },
                    commandTimeout: 3600,
                    commandType: CommandType.StoredProcedure
                    );
                return affectedows == 1;
            });
        }

А вот СП в БД

IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[messages_insert]') AND type in (N'P', N'PC'))
    BEGIN
        PRINT 'DROP PROCEDURE [dbo].[messages_insert]';
        DROP PROCEDURE [dbo].[messages_insert];
    END

    GO

PRINT 'CREATE PROCEDURE [dbo].[messages_insert]';
GO
CREATE PROCEDURE [dbo].[messages_insert]
        @id BIGINT,                                 -
        @group INT,                                 
        @group_user_id VARCHAR(100),                    
        @user_id VARCHAR(100),                              
        @start_time DATETIME,                               
        @finish_time DATETIME                              
AS
BEGIN
    INSERT INTO messages(id, group, group_user_id, user_id, start_time, finish_time)
    VALUES(@id, @group, @group_user_id, @user_id, @start_time, @finish_time);
END
GO

Я действительно не могу понять, где я иду не так, и трассировка стека действительно ничего не говорит

 Exception: System.Data.SqlClient.SqlException (0x80131904): Procedure or function 'messages_insert' expects parameter '@id', which was not supplied.

1 Ответ

0 голосов
/ 11 июня 2019

Убедитесь, что msg.Id не является нулевым при вызове хранимой процедуры.

...