0

MySql(navicat) に次のストアド プロシージャがありますが、 if st を追加するときに、更新操作の後にRefrenceCountをテストする必要があります。updateステートメントの後。構文エラーが発生しました

CREATE PROCEDURE `SP_IncDecReferenceCount`(pReferenceID int,pIncValue int)
BEGIN
update filesrefrences
set 
    filesrefrences.RefrenceCount= filesrefrences.RefrenceCount+pIncValue 
where 
        filesrefrences.ReferenceID= pReferenceID;
IF Not EXISTS(SELECT * from filesrefrences where filesrefrences.ReferenceID= pReferenceID and filesrefrences.RefrenceCount>0) then 
DELETE from filesrefrences WHERE filesrefrences.ReferenceID = pReferenceID;
end if 
END

[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'END' at line 11
4

1 に答える 1

0

できるよ

update filesrefrences
set 
    filesrefrences.RefrenceCount= filesrefrences.RefrenceCount+IF(pIncValue > 0,pIncValue,1)
where 
        filesrefrences.ReferenceID= pReferenceID;

また

update filesrefrences
    set 
        filesrefrences.RefrenceCount= filesrefrences.RefrenceCount+pIncValue
    where 
            (filesrefrences.ReferenceID= pReferenceID) AND (pIncValue > 0);
于 2013-01-03T09:21:33.030 に答える