私はそれがテーブル大陸に10個の値を挿入したいが、二行目でエラーがあると、このスクリプトMYSQL宣言した変数
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個の値を挿入したいが、二行目でエラーがあると、このスクリプトMYSQL宣言した変数
BEGIN
DECLARE crs INT DEFAULT 0;
WHILE crs < 10 DO
INSERT INTO `continent`(`name`) VALUES ('cont'+crs)
SET crs = crs + 1;
END WHILE;
END;
と間違っているものを得ることはありません。
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();
は@
でMySQLで変数を宣言し、:=
SET @crs = 0; // declaration
--here your query
@crs := @crs+1 // assignment
参照
' DECLAREのCRSのINTをBEGIN; SET @crs = 0; WHILE crs <10 DO INSERT INTO \ 'continent \ '(\' name \ ')VALUES(' cont '+ @ crs) SET @crs = crs + 1; ENDLILE; ; END; 'それはこのように働いていません。 – NiCU
':= ' – diEcho
というエラーが表示されます。#1064 - あなたはSQL構文にエラーがあります。あなたのMySQLサーバのバージョンに対応するマニュアルをチェックし、正しい構文が 'DECLARE @crs INT' – NiCU