 悬赏园豆:20
                [已解决问题] 
            
                    解决于 2014-03-26 10:36
                悬赏园豆:20
                [已解决问题] 
            
                    解决于 2014-03-26 10:36 
                 
        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粗心了 没注意