【问题标题】:How to fix "Must declare the scalar variable "@int"如何修复“必须声明标量变量“@int”
【发布时间】:2019-12-09 03:18:58
【问题描述】:

如果参数匹配,我正在创建一个存储过程以将数据插入表中。

这是我的存储过程

    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 之后声明变量,但没有成功。

【问题讨论】:

    标签: php sql sql-server ssms


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-03
      • 1970-01-01
      • 2013-07-03
      • 1970-01-01
      相关资源
      最近更新 更多