-1

私はMySqlが初めてです。私は手順を作成しました:

DELIMITER $$

CREATE PROCEDURE `sampledb`.`InsertSample`
(
    IN aName VARCHAR(20),
    IN aVersion VARCHAR(10),
    IN pName VARCHAR(50),
    OUT InsertStatus VARCHAR(30)
)
BEGIN
IF NOT EXISTS(SELECT st.AName FROM sampletable st WHERE st.AName = aName)
    INSERT INTO sampletable(AName, AVersion, PName) 
    VALUES(aName, aVersion, pName)
    SET InsertStatus = 'Success'
ELSE
    SET InsertStatus = 'Already exists!'
END IF
END$$

DELIMITER $$;

私も挿入する他の方法を試しました:

 INSERT INTO sampletable (aName, aVersion, pName)

どちらの場合も、次のエラーが発生しました。

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 ..

MySql 5.0.51b-community-nt を使用しています

4

2 に答える 2

0

これを試して:

DELIMITER $$

CREATE PROCEDURE `sampledb`.`InsertSample`
(
    IN aName VARCHAR(20),
    IN aVersion VARCHAR(10),
    IN pName VARCHAR(50),
    OUT InsertStatus VARCHAR(30)
)
BEGIN

IF NOT EXISTS(SELECT st.AName FROM sampletable st WHERE st.AName = aName) THEN
    INSERT INTO sampletable(AName, AVersion, PName) VALUES(aName, aVersion, pName);
    SET InsertStatus = 'Success';
ELSE SET InsertStatus = 'Already exists!';

END IF;

END$$

DELIMITER $$;

各行の終わりをマークする必要があり、ステートメントに THEN 句がありませんでした

于 2012-07-06T09:52:31.697 に答える
0

コードにセミコロン ( ;) がありません。

変化する

BEGIN
IF NOT EXISTS(SELECT st.AName FROM sampletable st WHERE st.AName = aName) THEN
    INSERT INTO sampletable(AName, AVersion, PName) 
    VALUES(aName, aVersion, pName)
    SET InsertStatus = 'Success'
ELSE
    SET InsertStatus = 'Already exists!'
END IF
END$$

DELIMITER $$;

BEGIN
IF NOT EXISTS( SELECT st.AName FROM sampletable st WHERE st.AName = aName ) THEN
    INSERT INTO sampletable( AName, AVersion, PName ) 
    VALUES( aName, aVersion, pName );
    SET InsertStatus = 'Success';
ELSE
    SET InsertStatus = 'Already exists!';
END IF;
END;
$$

DELIMITER ;

そして、それは機能するはずです。

于 2012-07-06T09:45:44.167 に答える