【问题标题】:unqiueidenfitier is not compatible with type int SQL Server Procedureunqiueidenfitier 与 int 类型的 SQL Server 过程不兼容
【发布时间】:2014-06-16 17:00:15
【问题描述】:

我有以下插入用户表的过程:

-- ================================================
-- 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 架构如下所示:

用户ID(PK,唯一标识符,非空) 登录名(nchar(15),不为空) 登录密码(nchar(15),not null)

请帮忙!

【问题讨论】:

    标签: sql sql-server stored-procedures sql-server-2012-express


    【解决方案1】:

    RETURN 只能与int 一起使用。您可以简单地使用SELECT 查询来检索变量@GUID 的值。

    参考:http://technet.microsoft.com/en-us/library/ms174998(v=sql.110).aspx

    【讨论】:

      【解决方案2】:

      摆脱RETURN @GUID,你应该很高兴。

      【讨论】:

        【解决方案3】:

        在 SQL Server 中,存储过程只能返回整数值。 SQL Server RETURN

        如果要从非整数的存储过程中返回数据,可以使用输出参数:Returning Data from Stored Procedures

        您将输出参数与输入参数一起声明:

        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;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-03-31
          • 2021-03-08
          • 1970-01-01
          • 1970-01-01
          • 2019-11-16
          相关资源
          最近更新 更多