Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Zeos kennt "SET TERM" nicht? (https://www.delphipraxis.net/60395-zeos-kennt-set-term-nicht.html)

FBrust 6. Jan 2006 11:03

Datenbank: Firebird embedded • Version: 1.5.2 • Zugriff über: Zeos 6.5.1

Zeos kennt "SET TERM" nicht?
 
Hallo,

ich versuche, über dieses Script

SQL-Code:
CREATE TABLE TBLLOCATIONS (
    ID INTEGER NOT NULL,
    STRNAME VARCHAR(50) NOT NULL);

CREATE GENERATOR GEN_TBLLOCATIONS_ID;
SET GENERATOR GEN_TBLLOCATIONS_ID TO 1;

SET TERM ^ ;

CREATE TRIGGER TRG_LOCATIONS FOR TBLLOCATIONS
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.ID IS NULL) THEN
    NEW.ID = GEN_ID(GEN_TBLLOCATIONS_ID,1);
END^

SET TERM ; ^
eine neue Tabelle inkl. Generator und Trigger in die Datenbank einzufügen.

Das Script wird aus einer Textdatei in die .Script-Property eines TZSQLProcessors geladen und per .Execute ausgeführt

Allerdings erhalte ich dann die Fehlermeldung "Invalid Token TERM".


Weiß jemand, woran das liegt?

Gruß
Frank

MarcoWarm 6. Jan 2006 11:19

Re: Zeos kennt "SET TERM" nicht?
 
"Set Term" ist kein gültiger SQL Befehl. Du kannst ihn einfach weglassen, dann wird es funktionieren.
Außerdem solltest du alle '^' löschen

Gruß

Marco

proitsystems 6. Jan 2006 11:45

Re: Zeos kennt "SET TERM" nicht?
 
Hallo Marco!

Leider muß ich dich korregieren. SET TERM [...] ist ein gültiger Firebird Befehl. Und zwar lässt sich damit das Zeichen ändern, mit denen SQL Befehle unterteilt werden (sprich: ein neuer SQL Befehl beginnt). Dies ist bei Firebird z.B. wichtig, wenn man die Funktion "CREATE PROCEDURE" oder "CREATE TRIGGER" aufruft, da in der Prozedur der Standardtrenner ";" benutzt wird.

Da Frank den "Terminator" auf "^" gesetzt hat, sind die "^" am Ende der SQL Befehle richtig.


Gruss,

Marc Geldon
(PRO IT SYSTEMS >>> www.proitsystems.de)

proitsystems 6. Jan 2006 14:15

Re: Zeos kennt "SET TERM" nicht?
 
Anmerkung: ich weiß nicht ob es bei ZEOS eine Komponente gibt die "SQL Skripts" (!) ausführt. Die meisten führen nur Statements aus. Selbst bei FIBPlus (Zugriffskomponentenset für Firebird/Interbase) gibt es ein Extra-Komponentenset namens "FibPlus Script component set" von Nikolay Trifonov, welches man extra erwerben muß.

Vielleicht ist das bei ZEOS ja ähnlich.


mfG,

Marc Geldon
(PRO IT SYSTEMS >>> www.proitsystems.de)

FBrust 9. Jan 2006 10:01

Re: Zeos kennt "SET TERM" nicht?
 
Hallo,

ja, bei Zeos gibt es die Komponente "ZSQLProcessor" die z. B. per LoadFromFile mit einem Script belegt werden kann.

Ich habe nochmal in das Firebird/Zeos-Tutorial von Domo Sokrat hineingeschaut und da war der entscheidende Hinweis. Wenn im Script der Delimiter geändert wird, muss man vor dem Laden des Skriptes in der Komponente die Eigenschaft DelimiterType auf dtSetTerm setzen, ansonsten reagiert die Komponente etwas verschnupft auf die "SET TERM ^;"-Anweisung im Skript.


Also jetzt gehts, Tabelle, Generator, Trigger, alles wird korrekt angelegt, so wie es sein soll. :thumb:


Gruß
Frank


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:42 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