首页 新闻 搜索 专区 学院

关于数据库存储过程的问题

0
悬赏园豆: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
    

青空下的思念的主页 青空下的思念 | 初学一级 | 园豆:4
提问于:2014-03-26 10:13
< >
分享
最佳答案
0

SELECT * FROM Person WHERE id=id

这样判断永远为真了。

 

==》

SELECT * FROM Person WHERE id=@id

收获园豆:20
清海扬波 | 小虾三级 |园豆:756 | 2014-03-26 10:15

 thank you粗心了 没注意

青空下的思念 | 园豆:4 (初学一级) | 2014-03-26 10:36
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册