Entwickler-Ecke
Datenbanken - Script in MySql schreiben
UliTs - Do 26.09.19 12:07
Titel: Script in MySql schreiben
Hallo allerseits,
ich bin unter extremen Zeitdruck und scheitere gerade an einem MySql-Script.
Ich möchte mit TFDQuery ein Script ausführen. Vermutlich liegt aber der Fehler bereits im Script:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
| start transaction; insert into Datei1 (Name,Vorname) values ('Testmann','Uli');
set @PersonenId = (select Last_Insert_Id());
if @PersonenId <> 0 then insert into Datei2 (PersonenId,Id2) values (@PersonenId,102); end if;
set @SpStRId = (select Last_Insert_Id());
if @PersonenId<>0 and @SpStRId<>0 then commit; else rollback; end if;
select @PersonenId PersonenId, @SpStRId SpStRId; |
Bereits bei der ersten if-Abfrage kommt es zu einem Fehler #1064
Woran kann das liegen?
UliTs - Do 26.09.19 12:14
Wenn ich die if-Abfragen weglasse, funktioniert es.
Also muss irgendetwas an der Syntax falsch sein. Nur was?
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
| start transaction; insert into Datei1 (Name,Vorname) values ('Testmann','Uli');
set @PersonenId = (select Last_Insert_Id());
/*if @PersonenId <> 0 then*/ insert into Datei2 (PersonenId,Id2) values (@PersonenId,102); /*end if;*/
set @SpStRId = (select Last_Insert_Id());
/*if @PersonenId<>0 and @SpStRId<>0 then*/ commit; /*else rollback; end if;*/
select @PersonenId PersonenId, @SpStRId SpStRId; |
jasocul - Do 26.09.19 13:21
Ich bin zwar kein mySQL-Experte, aber die Syntax sieht prinzipiell korrekt aus.
Welchen Wert hat @PersonenId denn? Falls das Null ist, kann mySQL das vielleicht nicht umsetzen und der Vergleich mit 0 führt zu einem Syntax-Fehler.
Nersgatt - Do 26.09.19 13:29
Bin mir nicht sicher. Versuch mal, die Bedingung zu klammern:
SQL-Anweisung
1: 2: 3: 4: 5: 6:
| if (@PersonenId <> 0) then insert into Datei2 (PersonenId,Id2) values (@PersonenId,102); end if; |
Ralf Jansen - Do 26.09.19 16:12
Das letzte mal als ich mir mysql angeschaut habe war "if" mitten in einem beliebigen Script nicht erlaubt. Entweder es ist Teil eines SQL Statements oder Teil eines Codeblocks in einer Stored Procedures, Trigger etc. aber nicht einfach so in einem Script.
UliTs - Fr 27.09.19 13:54
Vielen Dank für die Antworten.
Ich vermute, dass Ralf Recht hat und "if" in einem beliebigen Script nicht erlaubt ist :-( .
Ich denke, die einzige Lösung wird dann eine Stored Procedure sein.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!