unqiueidenfitier не совместим с процедурой типа int SQL Server

У меня есть следующая процедура для вставки в пользовательскую таблицу:

-- ================================================
-- Template generated from Template Explorer using:
-- Create Procedure (New Menu).SQL
--
-- Use the Specify Values for Template Parameters 
-- command (Ctrl-Shift-M) to fill in the parameter 
-- values below.
--
-- This block of comments will not be included in
-- the definition of the procedure.
-- ================================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:      Andy Armstrong
-- Create date: 
-- Description: 
-- =============================================
CREATE PROCEDURE db_SignupAddLogin 
    -- Add the parameters for the stored procedure here
    @LoginName VARCHAR(15), 
    @LoginPassword VARCHAR(15)


AS
BEGIN
DECLARE @GUID UNIQUEIDENTIFIER
SET @GUID = NEWID();
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for procedure here
     INSERT INTO tblMemberLogin
          ( 
            UserID,
            LoginName,
            LoginPassword
          ) 
     VALUES 
          ( 
            @GUID,
            @LoginName,                 
            @LoginPassword              
          ) 

    RETURN @GUID
END
GO

Однако, когда я выполняю его, я получаю следующую ошибку:

Msg 206, Level 16, State 2, Procedure db_SignupAddLogin, Line 34
Operand type clash: uniqueidentifier is incompatible with int

Я не могу понять, почему, поскольку я нигде не ссылаюсь на int.

Моя схема для tblMemberLogin выглядит так:

UserID(PK,uniqueidentifier,notnull) LoginName(nchar(15),не null) LoginPassword(nchar(15),не null)

Пожалуйста помоги!


person RenegadeAndy    schedule 16.06.2014    source источник


Ответы (3)


RETURN можно использовать только с int. Вы можете просто использовать запрос SELECT для получения значения переменной @GUID.

Ссылка: http://technet.microsoft.com/en-us/library/ms174998%28v=sql.110%29.aspx

person shree.pat18    schedule 16.06.2014

избавься от RETURN @GUID и все будет хорошо.

person sion_corn    schedule 16.06.2014

В SQL Server хранимые процедуры могут возвращать только целочисленные значения. ВОЗВРАТ SQL Server

Если вы хотите вернуть данные из хранимой процедуры, отличные от целого числа, вы можете использовать выходной параметр: Возврат данных из хранимых процедур

Вы объявляете выходной параметр вместе с входными параметрами:

CREATE PROCEDURE CREATE PROCEDURE db_SignupAddLogin 
    -- Add the parameters for the stored procedure here
    @LoginName VARCHAR(15), 
    @LoginPassword VARCHAR(15),
    @NewGuid UNIQUEIDENTIFIER OUTPUT
AS
BEGIN
    SET @NewGuid = NEWID();

    -- rest of procedure
END

А затем используйте выходной параметр:

DECLARE @NewLoginGuidFromSP UNIQUEIDENTIFIER
EXECUTE db_SignupAddLogin 'Username', 'password', @NewGuid = @NewLoginGuidFromSP OUTPUT;
person Sean Airey    schedule 16.06.2014