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