23

このスクリプトの何が問題なのかわかりません

BEGIN
DECLARE crs INT DEFAULT 0;

WHILE crs < 10 DO
INSERT INTO `continent`(`name`) VALUES ('cont'+crs)
SET crs = crs + 1;
END WHILE;
END;

テーブル大陸に10個の値を挿入したいのですが、2行目にエラーがあります。

4

2 に答える 2

37

MySQLで変数を宣言し@、で割り当てます:=

SET @crs = 0; // declaration
--here your query
@crs := @crs+1 // assignment

参考文献

于 2012-07-16T13:36:52.023 に答える
36

MySQL は、ストアド プロシージャ コードの無名ブロックの実行をサポートしていません。

そのコードを含むストアド プロシージャを作成し、それを呼び出す必要があります。

また、挿入ステートメントの最後にセミコロンがありませんでした。私はそれを修正しました。+ の代わりに concat() を使用して名前を生成したい場合もありますが、その変更はあなたに任せます。

プロシージャを作成します。

DELIMITER $$

DROP PROCEDURE IF EXISTS insert_ten_rows $$

CREATE PROCEDURE insert_ten_rows () 
    BEGIN
        DECLARE crs INT DEFAULT 0;

        WHILE crs < 10 DO
            INSERT INTO `continent`(`name`) VALUES ('cont'+crs);
            SET crs = crs + 1;
        END WHILE;
    END $$

DELIMITER ;

プロシージャを呼び出します。

CALL insert_ten_rows();
于 2012-07-16T14:33:21.050 に答える