CREATE PROCEDURE Person @id int, @Name nvarchar(50), @Addr nvarchar(50), @VersionNo int AS BEGIN IF NOT EXISTS (SELECT * FROM Person WHERE id=id) BEGIN INSERT INTO Person(id,Name,Addr,VersionNo) VALUES(@id,@Name,@Addr,@VersionNo) END ELSE IF EXISTS(SELECT * FROM Person WHERE VersionNo=@VersionNo) UPDATE Person SET id=@id, Name=@Name, Addr=@Addr, VersionNo=@VersionNo+1 WHERE id=@id ElSE RETURN 1 END 这个存储过程为什么 执行没效果,双if语句,先判断是否存在id的人,不存在则插入,存在则在判断是否存在版本号形同的,如果存在则更新,不存在则返回1,菜鸟求帮助
CREATE PROCEDURE Person
@id int,
@Name nvarchar(50),
@Addr nvarchar(50),
@VersionNo int
AS
BEGIN
IF NOT EXISTS (SELECT * FROM Person WHERE id=id)
BEGIN
INSERT INTO Person(id,Name,Addr,VersionNo) VALUES(@id,@Name,@Addr,@VersionNo)
END
ELSE IF EXISTS(SELECT * FROM Person WHERE VersionNo=@VersionNo)
UPDATE Person
SET id=@id,
Name=@Name,
Addr=@Addr,
VersionNo=@VersionNo
WHERE id=@id
ElSE
RETURN 1
END
SELECT * FROM Person WHERE id=id
这样判断永远为真了。
==》
SELECT * FROM Person WHERE id=@id
thank you粗心了 没注意