2 Stimmen

Batch-Insert-SQL-Abfrage in MySQL

Ich bekomme immer den Fehler 1064. Ich habe gesucht, wie man while-Schleifen macht, dann lokale Variablen deklariert usw. und ich sehe nicht, was ich falsch mache. Ich habe versucht, es ohne das ";" zu machen und ich habe versucht, das Trennzeichen auf "|" zu setzen, um ";" als Trennzeichen zwischen den Zeilen verwenden zu können (ich habe irgendwo gelesen, dass es so gemacht werden könnte?..)

Ich versuche diese Abfrage in PhpMyAdmin zu machen und meine MySql-Version ist 5.1.36

Ich werde nicht erklären, was ich versuche, da ich glaube, dass es einfach zu verstehen ist, indem Sie einfach meine Abfrage unten lesen.

BEGIN 
DECLARE v1 INT DEFAULT 0;
DECLARE v2 VARCHAR(10); 
WHILE v1 < 20 DO
SET v2 = CONCAT('Test ', CAST(v1 AS CHAR(2)));
INSERT INTO news(title,date, message) VALUES(v2, NOW(), v2);
SET v1 = v1 + 1;
END WHILE; 
END;

0voto

Hellspawn Punkte 1

Das erste, was ich sehen kann, ist ein kleiner Syntaxfehler innerhalb der CAST-Parameter.

Sie haben: CAST(v1 ASCHAR(2))

Sie brauchen: CAST(v1 AS CHAR(2))

Siehe http://dev.mysql.com/doc/refman/5.0/de/cast-functions.html#function_cast

0voto

rasmusnord Punkte 56

Ändern

DECLARE v2 VARCHAR(10); 

zu

DECLARE v2 VARCHAR(10);

0voto

The Scrum Meister Punkte 29113

MySql erlaubt nur compound statements mit dem BEGIN...END tag innerhalb von gespeicherten Programmen.

Von den Docs:

Die BEGIN ... END Syntax wird verwendet, um compound statements zu schreiben, die innerhalb von gespeicherten Programmen erscheinen können

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X