我正在创建一个存储过程,以便在参数匹配的情况下将数据插入表中。
这是我的存储过程
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之后声明变量,但没有用。
答案 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