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;
1845 次
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 に答える