我正在研究SQL Server 2008。
以下是我的查询,
CREATE PROCEDURE Usp_Travelready_Admin_AddUser
(
@pLoggedUserId AS INT,
@pMappedUser AS INT
)
AS
BEGIN
SET NOCOUNT ON
IF EXISTS
(
INSERT INTO TESTUSER (Var_LoggedInUser, Var_MappedUSer)
VALUES (@pLoggedUserId, @pMappedUser)
)
ELSE
(
UPDATE TESTUSER
SET Var_MappedUSer = @pMappedUser
WHERE Var_LoggedInUser = @pLoggedUserId
)
SET NOCOUNT OFF
END
其中TestUser表包含2列Var_MappedUSer
和Var_LoggedInUser
我想写一个存储过程来更新Var_MappedUSer
如果表中已存在Var_LoggedInUser
并插入用户if它不在表中
我在上面的存储过程中犯了什么错误?
答案 0 :(得分:1)
Exists
检查查询是否返回任何结果,所以这样做:
IF EXISTS (select * from TESTUSER where Var_LoggedInUser = @pLoggedUserId)
begin
INSERT INTO TESTUSER (Var_LoggedInUser, Var_MappedUSer)
VALUES (@pLoggedUserId, @pMappedUser)
end
ELSE
begin
UPDATE TESTUSER
SET Var_MappedUSer = @pMappedUser
WHERE Var_LoggedInUser = @pLoggedUserId
end
同样使用括号对if.. else
之间的操作进行分组无效,您必须使用begin .. end
语法。