Проблема при чтении значения параметра хранимой процедуры
Я не могу прочитать значение из хранимой процедуры при ее выполнении.
Вот моя хранимая процедура
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
Это должно работать просто отлично для вас.