Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi [MySQL] Stored Procedures in die DB per SQL-Script? (https://www.delphipraxis.net/67292-%5Bmysql%5D-stored-procedures-die-db-per-sql-script.html)

Igotcha 12. Apr 2006 14:01

Datenbank: MySQL • Version: 5.x • Zugriff über: ZEOS (6.5.x)

[MySQL] Stored Procedures in die DB per SQL-Script?
 
Hallo zusammen,

ich benutze die TZSQLProcessor-Komponente von ZEOS, um meine Tabellen und Inhalte per Script anzulegen. Leider funktioniert dies jedoch nicht bei Stored Procedures.

Der "MySQL Query Browser" liefert mir als SP-Quellcode folgendes Script (Beispiel):
SQL-Code:
DELIMITER $$

DROP PROCEDURE IF EXISTS `deletelizenz` $$
CREATE PROCEDURE `deletelizenz`(INID INT(6))
BEGIN
    DELETE FROM pim_pb_liz WHERE id=INID;
    DELETE FROM pim_pb_liz_fl WHERE lizid=INID;
    DELETE FROM pim_pb_liz_zr WHERE lizid=INID;
END $$

DELIMITER ;
Ich habe schon sämtliche Einstellungen von "Delimiter" und "Delimiter Type" bei der TZSQLProcessor versucht, aber sie "frisst" das Skript leider nicht.

Viele Grüße
Igotcha

Igotcha 28. Apr 2006 00:43

Re: [MySQL] Stored Procedures in die DB per SQL-Script?
 
Ich pushe mal, da ich immer noch keine Lösung für das Problem gefunden habe.

Hat jemand eine Idee, wie ich anders SPs aus meinem Programm heraus anlegen könnte?

Gruß Igotcha

mkinzler 28. Apr 2006 05:36

Re: [MySQL] Stored Procedures in die DB per SQL-Script?
 
Versuchs mal so:
SQL-Code:
DELIMITER $$ ;

DROP PROCEDURE IF EXISTS `deletelizenz' $$
CREATE PROCEDURE `deletelizenz`(INID INT(6))
BEGIN
    DELETE FROM pim_pb_liz WHERE id=INID;
    DELETE FROM pim_pb_liz_fl WHERE lizid=INID;
    DELETE FROM pim_pb_liz_zr WHERE lizid=INID;
END; $$

DELIMITER ; $$

Igotcha 28. Apr 2006 22:45

Re: [MySQL] Stored Procedures in die DB per SQL-Script?
 
Nee, klappt leider auch nicht so, ich werd noch irre damit ;-)

Gruß Igotcha

Hansa 29. Apr 2006 00:34

Re: [MySQL] Stored Procedures in die DB per SQL-Script?
 
Zitat:

Zitat von Igotcha
... um meine Tabellen und Inhalte per Script anzulegen. Leider funktioniert dies jedoch nicht bei Stored Procedures...

Gibt es für sowas denn kein MySQL-Administrations-Tool ? Ein Programm zum Anlegen einer SP zu schreiben, das sprengt doch wohl den Rahmen jedes DAUs. Der wird mit Sicherheit alle SPs anlegen, die die Welt nicht braucht. :mrgreen: Und dann ?

Igotcha 29. Apr 2006 02:26

Re: [MySQL] Stored Procedures in die DB per SQL-Script?
 
Nein, es geht darum, dass man Module meiner Anwendung mit einem Installer installieren kann. Dazu gehört u.a. auch das Anlegen und Füllen von Tabellen - das klappt ja auch wunderbar mit dem TZSQLPorcessor. Was ich nicht hinbekomme ist, wenn das Modul SPs benötigt, diese auch gleich automatisch mit anlegen zu lassen.

Und installieren tut das auch kein Endanwender. Nur sieht das irgendwie etwas doof aus, wenn 98% der Installation automatisiert ablaufen und dann eine Meldung kommt "So, nun installieren Sie mal fix den MySQL-Query Browser, denn es müssen noch 2 SPs installiert werden."

Viele Grüße
Igotcha

Hansa 29. Apr 2006 11:58

Re: [MySQL] Stored Procedures in die DB per SQL-Script?
 
Das ist IMHO sparen an der unnötigsten Stelle und macht allenfalls nur Probleme. Siehe jetzt gerade. Es hat schon angefangen. 8) Was nützt es DIR, dem Enduser eine SP vorzuenthalten ? Hat er das Zusatzmodul, welches die SP braucht nicht, dann kann der doch gar nichts damit anfangen. Ist sie aber, wenn auch nicht programmseitig mit Leben erfüllt, zumindest vorhanden, so kannst Du locker eine CD mit dem Zusatzmodul verschicken und gut ist. Und wie gesagt, die Frage hier wäre gar nicht erst aufgetaucht. Das nächste sind Demo-Versionen. Warum ist die Delphi-Demo ausgerechnet die Architect und nicht die Personal ? Für Deinen Fall würde es bedeuten, die DB für Testzwecke MIT den SPs auszuliefern. Und dann ? Der bestellt nicht alle Module und Du mußt dann auch noch ein Programm mitliefern, welches die gar nicht benötigte SP aus der DB entfernt ? :wall:

mkinzler 29. Apr 2006 12:11

Re: [MySQL] Stored Procedures in die DB per SQL-Script?
 
Theoretisch sollte die Anlage von SPs mit Hilfe eines Skriptes funktionieren. Ich habe keine Erfahrungen in mysql, in FB funktioniert es aber problemlos ( in anderen DBMS sicherlich auch!)
Du mußt bei der Anlage der SP nur beachten, daß du Terminalzeichen des Create-Skriptes sauber von denen des SP-Skriptes trennst.
Was für ein Fehler kommt? U.U. hilft es die SP zum Testen zu vereinfachen und dann Stück für Stück zu erweitern.

Igotcha 29. Apr 2006 12:37

Re: [MySQL] Stored Procedures in die DB per SQL-Script?
 
Naja die SP ist ja nun nicht besonders umfangreich ;-)

Also mit meiner Verison oben ging es ja schon bereits nicht und die Version von mkinzler bringt folgenden Fehler:

"You have an error in your syntax ... near 'DELIMITER $$' at line 1"

TZSQLProcessor hat die Eigenschaften:

Script(TStrings): da steht der SQL-Code drin bzw. wird mit LoadFromFile geladen

Delimiter(String): steht defaultmäßig auf ";" (aber auch das Setzen auf $$ bringt nichts)

DelimiterType [dtDefault, dtEmptyLine, dtGo, dtSetTerm]: Alle bereits durchprobiert

Aufgerufen wird as Ganze so:
Delphi-Quellcode:
TZSQLP.Parse;
TZSQLP.Execute;
Also auch nichts magisches dabei. Und wir gesagt, solange es sich um "normalen" SQL-Code handelt, funktioniert das ja auch alles problemlos (Tabellen einrichten, füllen, etc.).

Und zu den Vor-und Nachteilen, die an anderer Stelle genannt wurden: Es handelt sich dabei um eine Unternehmensanwendung und die Installationsroutinen prüfen genau, was bereits auf dem Zielsystem vorhanden ist und was nicht.

Viele Grüße
Igotcha

Igotcha 30. Apr 2006 19:28

Re: [MySQL] Stored Procedures in die DB per SQL-Script?
 
Problem gelöst, siehe hier.

Gruß Igotcha


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:31 Uhr.
Seite 1 von 2  1 2      

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