Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi IBX Create Procedure (https://www.delphipraxis.net/63831-ibx-create-procedure.html)

Gruber_Hans_12345 23. Feb 2006 14:25

Datenbank: Firebird • Version: 1.5 • Zugriff über: IBX

IBX Create Procedure
 
Wie bzw. mit welcher IBX Komponente kann ich eine Procedure in der Datanbank erzeugen ?

SQL-Code:
SET TERM ## ;
CREATE PROCEDURE UPDATE_ARTIKEL (TEIL INTEGER)
AS
DECLARE VARIABLE ID INTEGER;
DECLARE VARIABLE MENGE INTEGER;
BEGIN
  FOR SELECT ARTIKELID, SUM(MENGE) FROM MATERIAL
             WHERE TEIL = :TEIL
             GROUP BY ARTIKELID
             INTO ID, MENGE
  DO
    UPDATE ARTIKEL SET MENGE = COALESCE(MENGE, 0) + :MENGE
           WHERE ID = :ID;
END ##
SET TERM ; ##
Habe immer das Problem, das er das TERM nicht kennt, und wenn ich die SET TERMS weglasse, dann bekomm ich einen Fehler im Blob.

In der IBConsole kann ichs erfolgreich ausführen, nur für updates, muß ich es auch per programm schaffen ...

MagicAndre1981 23. Feb 2006 14:27

Re: IBX Create Procedure
 
haste mal TIBScript probiert?

Gruber_Hans_12345 23. Feb 2006 14:29

Re: IBX Create Procedure
 
ne, finde aber auch kein IBScript bei mir ...

MagicAndre1981 23. Feb 2006 14:35

Re: IBX Create Procedure
 
Dann mach mal ein Update deiner IBX-Komponenten. Die letzte die ich noch kenne ist für Delphi6 die Version 6.0.8. Schau mal auf der BDN.

André

Gruber_Hans_12345 23. Feb 2006 14:40

Re: IBX Create Procedure
 
ne, update will ich keines machen, ist mir zu gefährlich, das dann wieder was nicht funktioniert ... das muß doch auch anders gehen oder ?

MagicAndre1981 23. Feb 2006 14:52

Re: IBX Create Procedure
 
Wieso? Da gabs nur kleine Änderungen, aber vieles wurde mit der neuen Verson besser.

Also mach das Update und dann kannst du Scripts ausführen.

Gruber_Hans_12345 23. Feb 2006 14:58

Re: IBX Create Procedure
 
Da ich IBX mit Firebird 1.5 verwende (werde zwar mal auf eine andere, die auch Firebird 100% unterstüzt umsteigen, aber habe noch keine Zeit dazu) und ich deshalb vorsichtig bin mit dem Updaten von IBX, wer weiss ob dann Firebird 1.5 noch immer so gut läuft wie jetzt (Wenn du neue Features für IB 7.1 eingebaut haben ....)

Und es muß doch auch anders möglich sein (Die IBConsole gabs z.B.: ja auch vor IBX 6.08 )

kann mann eigentlich irgendwo nachschauen, welche version von IBX man benutzt ? Finde niergends sowas, auch in den Sources ist nix drinnen ...

MagicAndre1981 23. Feb 2006 21:12

Re: IBX Create Procedure
 
Zitat:

Zitat von Gruber_Hans_12345
kann mann eigentlich irgendwo nachschauen, welche version von IBX man benutzt ? Finde niergends sowas, auch in den Sources ist nix drinnen ...

Rechte maustaste auf eine IBX-Kompo und da sollte der Punkt version auftauchen.

MrSpock 23. Feb 2006 21:50

Re: IBX Create Procedure
 
Hallo Hans,

benutze einfach eine IBSQL Komponente. Du benötigst dabei die beiden TERM Anweisungen zum Umschalten des ; nicht. So bleibt eine einzige Anwendung übrig, die du mit der IBSQL Komponente ausführen kannst.

Gruber_Hans_12345 24. Feb 2006 08:26

Re: IBX Create Procedure
 
Ne, hab da kein Version drinnen (Da steht dann nur "InterbaseExpress 6" und sonst nix)

@MrSpock: Genau so hab ichs ja schon probiert :

SQL-Code:
CREATE PROCEDURE UPDATE_ARTIKEL (TEIL INTEGER)
AS
DECLARE VARIABLE ID INTEGER;
DECLARE VARIABLE MENGE INTEGER;
BEGIN
  FOR SELECT ARTIKELID, SUM(MENGE) FROM MATERIAL
             WHERE TEIL = :TEIL
             GROUP BY ARTIKELID
             INTO ID, MENGE
  DO
    UPDATE ARTIKEL SET MENGE = COALESCE(MENGE, 0) + :MENGE
           WHERE ID = :ID;
END;
Doch auch dann bekomm ich den Fehler (beim Commit der Transaction) :
EIBInterbaseError "invalid request BLR at offset 179 bad parameter number"


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