查询以检查表中是否存在id

时间:2013-11-27 10:16:23

标签: sql sql-server sql-server-2008

我正在研究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_MappedUSerVar_LoggedInUser我想写一个存储过程来更新Var_MappedUSer如果表中已存在Var_LoggedInUser并插入用户if它不在表中

我在上面的存储过程中犯了什么错误?

1 个答案:

答案 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语法。