Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   [MySQL] Create function geht nicht (mehr) --> Gelöst (https://www.delphipraxis.net/153967-%5Bmysql%5D-create-function-geht-nicht-mehr-geloest.html)

fkerber 23. Aug 2010 12:13

Datenbank: MySQL • Version: 5 • Zugriff über: phpMyAdmin

[MySQL] Create function geht nicht (mehr) --> Gelöst
 
Hi!

Ich würde gerne folgende function in die DB hauen:

SQL-Code:
CREATE FUNCTION `nextGID`(seqname CHAR(20)) RETURNS int(10) unsigned
BEGIN
INSERT INTO global_seq VALUES (seqname,LAST_INSERT_ID(1))
ON DUPLICATE KEY UPDATE val=LAST_INSERT_ID(val+1);
RETURN LAST_INSERT_ID();
END
DAs muss auch so oder so ähnlich funktioniert haben, das oben stammt nämlich direkt aus einer DB, wo die Funktion drin ist (SHOW CREATE FUNCTION ...)

Leider ist die einzige Antwort:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 4

Zeile 4 nach seiner Interpreation ist scheinbar VALUES (


Wo ist der Fehler?


Liebe Grüße,
Frederic

DeddyH 23. Aug 2010 12:19

AW: [MySQL] Create function geht nicht (mehr)
 
Müsste es nicht
SQL-Code:
INSERT INTO global_seq(Feld1,Feld2) --Felder explizit benennen
VALUES (seqname,LAST_INSERT_ID(1))
heißen? Ich müsste aber einmal nachschauen, ob MySQL sich da evtl. anders verhält.

mkinzler 23. Aug 2010 12:21

AW: [MySQL] Create function geht nicht (mehr)
 
Heisst die Spalte genauso wie der Parameter?

fkerber 23. Aug 2010 12:25

AW: [MySQL] Create function geht nicht (mehr)
 
Hi,

normal geht es auch ohne Feldangaben, wenn es alle sind, ändert aber leider auch nix.
Und es ist nicht der selbe Name - mit Feldnamen sieht es so aus:

SQL-Code:

CREATE FUNCTION `nextGID`(seqname CHAR(20)) RETURNS int(10) unsigned
BEGIN
INSERT INTO global_seq(name,val) VALUES (seqname,LAST_INSERT_ID(1))
ON DUPLICATE KEY UPDATE val=LAST_INSERT_ID(val+1);
RETURN LAST_INSERT_ID();
END
Das Ergebnis ist leider das gleiche...


EDIT:
Der DELIMITER wars schuld.
Daher musste erstmal ne neue phpMyAdmin-Version her, die die Eingabe des selben ermöglicht...


Liebe Grüße,
Frederic


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:59 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz