如何解决“必须声明标量变量“ @int”

时间:2019-12-09 03:18:58

标签: php sql sql-server ssms

我正在创建一个存储过程,以便在参数匹配的情况下将数据插入表中。

这是我的存储过程

    CREATE PROCEDURE [dbo].[spAutoRegistPosition]
        @Position varchar(255),
        @UserID int
    AS
    IF NOT EXISTS (SELECT * FROM dbo.UserXUserGroup WHERE UserID = @int)
    BEGIN

        -- INSERT HERE
        IF @Position = 'Manager'
            INSERT INTO dbo.UserXUserGroup(UserID, UserGroupID)  
            VALUES (@UserID, 4)

        ELSE IF @Position = 'GM'
            INSERT INTO dbo.UserXUserGroup(UserID, UserGroupID) 
            VALUES (@UserID, 3)

        ELSE IF @Position = 'Direktur'
            INSERT INTO dbo.UserXUserGroup(UserID, UserGroupID)  
            VALUES (@UserID, 3)

    END
    GO

但是当我运行时,我收到了此错误消息

  

消息137,级别15,状态2,过程spAutoRegistPosition,第8行[批处理开始第9行]
  必须声明标量变量“ @int”。”

我已经尝试在BEGIN之后声明变量,但没有用。

1 个答案:

答案 0 :(得分:1)

您没有变量@INT。您似乎要使用@UserID

    CREATE PROCEDURE [dbo].[spAutoRegistPosition]
        @Position varchar(255),
        @UserID int
    AS
    IF NOT EXISTS (SELECT * FROM dbo.UserXUserGroup WHERE UserID = @UserID)
    BEGIN
        -- INSERT HERE
        IF @Position = 'Manager'
        INSERT INTO dbo.UserXUserGroup(UserID, UserGroupID)  
        VALUES (@UserID, 4)

        ELSE IF @Position = 'GM'
        INSERT INTO dbo.UserXUserGroup(UserID, UserGroupID) 
        VALUES (@UserID, 3)

        ELSE IF @Position = 'Direktur'
        INSERT INTO dbo.UserXUserGroup(UserID, UserGroupID)  
        VALUES (@UserID, 3)

    END
    GO