0

mysqlストアドプロシージャを作成しようとしたときにエラーが発生しました。ここにストアドプロシージャがあります

    DELIMITER $$

CREATE

    PROCEDURE `crossqueue_bw`.`pr_SaveProfile`(IN vProfileId INT)

    BEGIN
        IF SELECT COUNT(ProfileId) FROM tblprofile WHERE ProfileId=vProfileId > 0 THEN

        ELSE

        END IF;
    END$$

DELIMITER ;

これがエラーです

    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 'select count(ProfileId) from tblprofile where ProfileId=vProfileId > 0 then

' at line 6

アップデート::

このクエリで試してみました

    DELIMITER $$

CREATE

    PROCEDURE `crossqueue_bw`.`pr_SaveProfile`(IN vProfileId INT)

    BEGIN
        DECLARE v_count INT;
        v_count = SELECT COUNT(ProfileId) FROM tblprofile WHERE ProfileId=vProfileId;
        IF v_count > 0 THEN

        ELSE

        END IF;
    END$$

DELIMITER ;

これがエラーです

    Error Code : 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 '= SELECT COUNT(ProfileId) FROM tblprofile WHERE ProfileId=vProfileId;
        if v_cou' at line 7
4

2 に答える 2

0

SPの使用:

 DECLARE v_count int;

    set v_count := (SELECT COUNT(ProfileId) FROM tblprofile WHERE ProfileId=vProfileId);

    IF (v_count > 0) THEN
于 2012-12-04T16:32:44.217 に答える
0

実際には、2つのエラーがありました。1つは@Sashiによって報告された括弧の欠落であり、もう1つは、少なくとも1つの条件がif内にある必要があり、それ以外の部分ではエラーが表示されるというものでした。

これが作業コードです

    DELIMITER $$

CREATE

    PROCEDURE `crossqueue_bw`.`pr_SavePrssosssfile`(IN vProfileId INT)

    BEGIN
        IF (SELECT COUNT(ProfileId) FROM tblprofile WHERE ProfileId=vProfileId) > 0 THEN
        SET @q=0;
        ELSE
        SET @q=0;
        END IF;
    END$$

DELIMITER ;
于 2012-12-05T10:44:17.897 に答える