Проблема при чтении значения параметра хранимой процедуры

Я не могу прочитать значение из хранимой процедуры при ее выполнении.

Вот моя хранимая процедура

ALTER Procedure [dbo].[SaveInvitation]
(
    @InvitationID INT OUTPUT,
    @UserID INT,
    @Email NCHAR(100),
    @InvitationGUID  UNIQUEIDENTIFIER OUTPUT
)
AS
BEGIN
SET NOCOUNT ON;

BEGIN TRY
    IF @UserID = -1
        BEGIN
            SET @UserID = NULL
        END

    IF NOT EXISTS (SELECT 1 FROM Invitations WHERE LTRIM(RTRIM(Email)) = LTRIM(RTRIM(@Email)))
        BEGIN
            INSERT INTO Invitations (UserID,
                    Email,
                    CreateDate)
            VALUES (@UserID,
                    @Email,
                    GETDATE())

            -- GET NEWLY INSERTED INVITATIONS ID
            SET @InvitationID = IDENT_CURRENT('Invitations')

            -- GET GUID FROM INVITATION ID
            SELECT  @InvitationGUID = InvitationGUID
            FROM    Invitations
            WHERE   InvitationID = @InvitationID
        END
    ELSE
        BEGIN
            RAISERROR('ALREADY_INVITATED', 16, 127)
        END
END TRY
BEGIN CATCH
    IF @@TRANCOUNT > 0
        BEGIN
            ROLLBACK
        END
    EXEC ThrowError
END CATCH
END

Я выполняю эту процедуру из этой функции

мой DataBaseModel.Designer.cs:

public ObjectResult<SaveInvitation_Result> SaveInvitation(ObjectParameter invitationID, Nullable<global::System.Int32> userID, global::System.String email, ObjectParameter invitationGUID)
    {
        ObjectParameter userIDParameter;
        if (userID.HasValue)
        {
            userIDParameter = new ObjectParameter("UserID", userID);
        }
        else
        {
            userIDParameter = new ObjectParameter("UserID", typeof(global::System.Int32));
        }

        ObjectParameter emailParameter;
        if (email != null)
        {
            emailParameter = new ObjectParameter("Email", email);
        }
        else
        {
            emailParameter = new ObjectParameter("Email", typeof(global::System.String));
        }

        return base.ExecuteFunction<SaveInvitation_Result>("SaveInvitation", invitationID, userIDParameter, emailParameter, invitationGUID);
    }

Это исключение

Считыватель данных несовместим с указанным "TestModel.SaveInvitation_Result". Член типа InvitationGUID не имеет соответствующего столбца в считывателе данных с тем же именем.

Я создал сложный тип, т.е. SaveUserRegistration_Result и импортировал одну функцию SaveInvitation возвращаемого типа SaveUserRegistration_Result,

Как я могу решить выше исключения? Есть ли какие-либо изменения в хранимой процедуре?

Скриншот

1 ответ

Решение

Это дает вам эту ошибку, потому что вы на самом деле не SELECTвозвращая результат. Если вы добавили строку в конец вашей процедуры, например:

SELECT  @InvitationGUID AS InvitationGUID

Это должно работать просто отлично для вас.

Другие вопросы по тегам