Sql server 2005 选择什么&x27;1';在以下存储过程中

Sql server 2005 选择什么&x27;1';在以下存储过程中,sql-server-2005,Sql Server 2005,这是桌子的行号还是什么? 还有“如果存在”是检查什么?如果ID存在或不存在,则返回该表???似乎编写该存储过程的人正在使用该ID作为返回值来指示成功或失败 这样做将导致对过程的每次调用返回一行一列 正确的处理方法是实际使用存储过程的返回值,而不是返回单列单行: BEGIN IF EXISTS(SELECT * FROM Table1 WHERE ID=@ID) BEGIN UPDATE Table1 SET Name=@Name WHERE ID=

这是桌子的行号还是什么?
还有“如果存在”是检查什么?如果ID存在或不存在,则返回该表???

似乎编写该存储过程的人正在使用该ID作为返回值来指示成功或失败

这样做将导致对过程的每次调用返回一行一列

正确的处理方法是实际使用存储过程的返回值,而不是返回单列单行:

BEGIN    
 IF EXISTS(SELECT  * FROM Table1 WHERE ID=@ID)      
  BEGIN     
    UPDATE Table1 SET Name=@Name  WHERE ID=@ID    
    SELECT '1'   
  END    
 ELSE     
  SELECT '0'    
END  

可能有一些调用代码会检查此值以确定行是否已更新

与其检查和更新(两个表访问),不如这样做

BEGIN
    IF EXISTS(SELECT * FORM Table1 WHERE ID = @ID)
    BEGIN
        UPDATE Table1 SET Name = @Name WHERE ID = @ID
        RETURN 1
    END

    RETURN 0
END
如果
id
是主键,那么您就可以这样做

 UPDATE Table1 SET Name=@Name  WHERE ID=@ID    
 SELECT CASE WHEN @@Rowcount = 0 THEN 0 ELSE 1 END

注意:只要
SET NOCOUNT
未启用,则受影响的行数仍将传回客户端应用程序。

选择“1”用于指示Table1包含已更新的id值@id(一个参数)。选择“0”表示表1不包含id值@id。

如果存在,则检查表1中是否有具有给定id的行。如果有行,则将使用给定名称更新该行。选择“1”将返回“1”,选择“0”将返回“0”。“1”或“0”表示是否找到该行。

1和0是返回值??为什么不使用“返回1”?@快乐的灵魂-我也在想同样的事情。很可能是某个不知道返回的人。选择“1”在单引号中包含1,那么这是否意味着它只是一个值而不是列号?或者什么?@Happy Soul-这只是意味着他们将1作为字符串值而不是数字返回。哦,好的..那么1是字符串..hmmm
 UPDATE Table1 SET Name=@Name  WHERE ID=@ID    
 SELECT  @@Rowcount