Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Firebird: DDL-Skript (CREATE PROCEDURE) über Delphi, wie? (https://www.delphipraxis.net/130733-firebird-ddl-skript-create-procedure-ueber-delphi-wie.html)

alzaimar 12. Mär 2009 10:07

Datenbank: Firebird • Version: 2.1 • Zugriff über: SQLExpress oder IB

Firebird: DDL-Skript (CREATE PROCEDURE) über Delphi, wie?
 
Hi,

Ich muss via Delphi eine Stored Procedure ändern. Ich verwende IB und SQLExpress-Komponenten.
Das Skript sieht so aus:
SQL-Code:
SET TERM ^ ;

CREATE OR ALTER PROCEDURE GETID (Name varchar(20))
returns (id integer)
as
begin
  select deID from Descriptions where deName :Name into :ID ;
  if (id is null) then begin
    id = GEN_ID(GEN_Descriptions,1);
    insert into Descriptions values(:id, :Name ,CURRENT_TIMESTAMP);
  end
  suspend;
end^

SET TERM ; ^
Das Skript will ich so ausführen:
Delphi-Quellcode:
SQLConnection.ExecuteDirect(sScriptCode);
Klappt nicht, es erscheint der Fehler:
Zitat:

Token unknown - line 1, column 5
TERM.
Mit einem TSQLCommand geht's auch nicht. Was muss ich ändern, damit das geht?

WoGe 12. Mär 2009 10:11

Re: Firebird: DDL-Skript (CREATE PROCEDURE) über Delphi, wie
 
Wenn Du einen Batch ausführen lassen kannst (ShellExecute etc.)- geht es mit ISQL oder dem IBScript aus IBExpert

Gruss
wo

Lemmy 12. Mär 2009 10:12

Re: Firebird: DDL-Skript (CREATE PROCEDURE) über Delphi, wie
 
Hi,

ich kenne die SQLExpress-Komponenten nicht, aber ein SQL-Script kannst Du nur in einer entsprechenden Komponente absetzen, die das Script wiederum in einzelne SQL-Statements teilt und diese dann entsprechend absetzt.

Wenn es sich lediglich um EINE SQL-Anweisung handelt kannst Du diese natürlich auch mit einer "normale" SSQL-Komponente absetzen - d.h. in diesem Fall einfach das Set Term weglassen und nur die "Create Or Alter" absetzen.

Grüße
Lemmy

alzaimar 12. Mär 2009 10:28

Re: Firebird: DDL-Skript (CREATE PROCEDURE) über Delphi, wie
 
IBExpert kann das! :thumb:

Ich musste die "SET TERM"-Anweisung extrahieren und dem IBScript das '^' als 'Terminator' ("I'll be back :mrgreen: ) angeben. Die GRANTs habe ich separat abgesetzt.


Vielen Dank!

hoika 12. Mär 2009 11:01

Re: Firebird: DDL-Skript (CREATE PROCEDURE) über Delphi, wie
 
Hallo,

wie Lemmy schon richtig sagte.

Nimm eine normale Query und lass das Set Term weg.


Heiko

RWarnecke 12. Mär 2009 12:07

Re: Firebird: DDL-Skript (CREATE PROCEDURE) über Delphi, wie
 
Zitat:

Zitat von hoika
Hallo,

wie Lemmy schon richtig sagte.

Nimm eine normale Query und lass das Set Term weg.


Heiko

Ich habe aber die Erfahrung gemacht, das die Komponenten IBScript für solche SQL-Skripts die beste Lösung ist. Damit kann ich halt das SQL-Script von IBExpert oder einem anderen Programm direkt in meinen Sourcecode übernehmen und ausführen.

hoika 12. Mär 2009 12:16

Re: Firebird: DDL-Skript (CREATE PROCEDURE) über Delphi, wie
 
Hallo,

schon klar,
ich wollte nur darauf hinweisen, dass es auch mit Board-Mitteln geht.

eine spezielle Script-Komponent ist natürlich besser,
weil z.B. die Set Term Sache drinbleiben kann.


Heiko


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