2
CREATE PROCEDURE p1 
(
    IN name_val VARCHAR(255),
    OUT iJobID  INT
)


BEGIN

    IF NOT EXISTS (SELECT id FROM test WHERE id='11')

        BEGIN

            INSERT INTO test(name) VALUES(name_val);
            SET iJobID :=  LAST_INSERT_ID();
        END

    ELSE
        BEGIN

             UPDATE test SET name=name_val WHERE id = 11; 
        END 

    INSERT INTO vasu2(vname) VALUES(name_val);
    SET @ivD :=  LAST_INSERT_ID();

    INSERT INTO vasu(id, id2) VALUES(iJobID, @ivD); 
END;
4

3 に答える 3

1

使用しているIF構文は、である可能性が最も高いですT-SQL。また、を変更する必要がありますdelimiter

DELIMITER $$
CREATE PROCEDURE p1 
(
    IN name_val VARCHAR(255),
    OUT iJobID  INT
)
BEGIN

    SET @recCount := (SELECT COUNT(*) FROM test WHERE id = 11);
    IF @recCount > 0 THEN
        INSERT INTO test(name) VALUES(name_val);
        SET iJobID :=  LAST_INSERT_ID();
    ELSE
        UPDATE test SET name=name_val WHERE id = 11; 
    END IF;

    INSERT INTO vasu2(vname) VALUES(name_val);
    SET @ivD :=  LAST_INSERT_ID();

    INSERT INTO vasu(id, id2) VALUES(iJobID, @ivD); 
END $$
DELIMITER ;
于 2013-02-01T13:14:05.583 に答える
0

あなたは忘れました:delimiter、、 それが役立つことを願っていthenますend if

delimiter $$


CREATE PROCEDURE test.p1 
(
    IN name_val VARCHAR(255),
    OUT iJobID  INT
)
BEGIN
    IF NOT EXISTS (SELECT id FROM test WHERE id='11') THEN
            INSERT INTO test(name) VALUES(name_val);
            SET iJobID :=  LAST_INSERT_ID();
    ELSE
             UPDATE test SET name=name_val WHERE id = 11; 
    END IF;
    INSERT INTO vasu2(vname) VALUES(name_val);
    SET @ivD :=  LAST_INSERT_ID();
    INSERT INTO vasu(id, id2) VALUES(iJobID, @ivD); 
END
$$

DELIMITER ;
于 2013-02-01T13:14:37.943 に答える
0

存在しない場合はmysqlに存在しないと思います

于 2013-02-01T13:16:15.937 に答える