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] Stored Procedure definieren (https://www.delphipraxis.net/42559-%5Bibx%5D-stored-procedure-definieren.html)

MrSpock 20. Mär 2005 21:57

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

[IBX] Stored Procedure definieren
 
Hallo,

ich habe eine Definition einer Stored Procedure, die auszugsweise so aussieht:

SQL-Code:
CREATE PROCEDURE KAEUFERZUORDNUNG (
    INOHR VARCHAR(25))
RETURNS (
    AUSGANZ INTEGER)
AS
DECLARE VARIABLE WOCHE VARCHAR(5);
DECLARE VARIABLE OHR VARCHAR(25);
DECLARE VARIABLE LIEFERANT VARCHAR(5);
DECLARE VARIABLE ERFNR VARCHAR(6);
DECLARE VARIABLE ERFDATUM DATE;
DECLARE VARIABLE KNR VARCHAR(5);
DECLARE VARIABLE LNR SMALLINT;
DECLARE VARIABLE ART VARCHAR(5);
DECLARE VARIABLE GESCHLECHT CHAR(1);
DECLARE VARIABLE BEM VARCHAR(10);
DECLARE VARIABLE WAHL CHAR(1);
DECLARE VARIABLE LAND CHAR(2);
DECLARE VARIABLE KPTGEWB FLOAT;
DECLARE VARIABLE ZUABK FLOAT;
DECLARE VARIABLE PREIS FLOAT;
DECLARE VARIABLE GEBDAT DATE;
DECLARE VARIABLE ANZ INTEGER;
begin
  /* Procedure Text */
  ausganz = 0;
  if (INOHR = 'ALL') then
  begin
    for select WOCHE, OHR_NR, LIEFERANT,
               ERFASS_NR, ERFASSUNGSDATUM, KUNDEN_NR,
               LAUF_NR, ART, GESCHLECHT,
             BEMERKUNG, WAHL, LAND,
             KPT_GEW_B, ZU_AB_K, PREIS,
             GEBURTSDATUM FROM export
    where (KUNDEN_NR is not null) and
        (KUNDEN_NR <> '')
    into :woche, :ohr, :lieferant, /* <---- hier */
            :erfnr, :erfdatum, :knr,
            :lnr, :art, :geschlecht,
            :bem, :wahl, :land,
            :kptgewb, :zuabk, :preis,
            :gebdat do
    begin
        ausganz = ausganz+1;
  ...
Diese Query Lade ich wie folgt in die SQL Eigenschaft einer IBQuery oder einer IBSQL Komponente:

Delphi-Quellcode:
 IBSQLAdmin.SQL.LoadFromFile(fname);
      ShowMessage(IBSQLAdmin.SQL.Text);
      IBSQLAdmin.Transaction.StartTransaction;
      IBSQLAdmin.ExecQuery;
Das ShowMessage habe ich nur reingepackt, um zu sehen, dass auch die richtige Anweisung geladen wird.

Das SQL Statement wird abgeprochen mit unknown token an der Stelle, an der der erste Doppelpunkt auftritt, also bei :woche. Warum?

[edit]
Bei Eingabe über IBExpert, funktioniert das Statement.
[/edit]

Lemmy 21. Mär 2005 09:33

Re: [IBX] Stored Procedure definieren
 
Hi,

hast Du schon mal versucht das Teil in der TIBScript laufen zu lassen?

Grüße
Lemmy

MrSpock 21. Mär 2005 10:59

Re: [IBX] Stored Procedure definieren
 
Hallo Lemmy,

nein, probiere ich aber heute Abend einmal.

Generalissimo 21. Mär 2005 11:48

Re: [IBX] Stored Procedure definieren
 
Ich weiß es nicht mehr genau aber ich glaube Groß/Kleinschreibung muss beachtet werden.

Variable heißt WOCHE ... bei into heißt es :woche

MrSpock 21. Mär 2005 13:11

Re: [IBX] Stored Procedure definieren
 
Hallo Generalissimo,
das war auch meine erste Vermutung. Habe deshalb mal die Groß/Kleinschreibung geändert (einmal die Variable z.B. in woche und :woche aber auch :WOCHE und WOCHE. Die Fehlermeldung bleibt jedoch.

@Lemmy: Gibt es die Komponente IBScript überhaupt in D7? Ich kann mich für die Scriptausführung nur an FIBPlus erinnern, wo es diese Komponente gibt.

Lemmy 21. Mär 2005 13:29

Re: [IBX] Stored Procedure definieren
 
Hi,

Groß-Kleinschreibung ist i.d.R. unwichtig, außer man hat schon von Anfang an darauf geachtet und die Attribute mit " eingeschlossen.

Ja, in D7 ist die TIBScript mit dabei. Bei Delphi 5 musste sie noch manuell nachinstalliert werden.

Grüße
Lemmy

MrSpock 21. Mär 2005 17:43

Re: [IBX] Stored Procedure definieren
 
Hallo Lemmmy,

in meiner Installation von D7 Prof. gibt es keine Komponente mit dem Namen IBScript. Auch bei den Sourcen finde ich eine solche Komponente nicht, die ich nachinstallieren könnte. Wo hast du diese Komponente denn gefunden? :stupid:

Hansa 21. Mär 2005 18:08

Re: [IBX] Stored Procedure definieren
 
Könnte sein, daß Lemmy an IBEscript von IBExpert denkt. Generell würde ich mal sagen, SPs > 10 Zeilen nicht in Delphi zu testen, sondern zuerst in IBExpert. Läuft da alles richtig und in Delphi taucht doch noch ein Fehler auf, dann findet man den i.d.R. ziemlich schnell.

P.S.: ich habe mal das Grundgerüst Deiner SP in IBExpert getestet. An ":woche" usw. liegt es wohl nicht. Bei mir kam "unexpected end of file" oder so ähnlich. Wahrscheinlich wegen falsch gesetzem "end" oder so. 8)

MrSpock 21. Mär 2005 18:23

Re: [IBX] Stored Procedure definieren
 
Hallo Hansa,

in IBExpert funktioniert es problemlos. Ich habe die Stored Procedure dort geschrieben und sie funktioniert auch in der Anwendung. Für solche Fäle habe ich beim Kunden eine Funktion implementiert und in die normale Anwendung integriert. Wenn im Programmverzeichnis eine oder mehrere Dateien mit SQL Statements stehen, werden diese in eine IBQuery (oder IBSQL) geladen und ausgeführt. So hätte der Kunde auch die neue SP und könnte die verbesserte Anwendung laufen lassen. Nur, dass jetzt der Fehler auftaucht. :gruebel:

Hansa 21. Mär 2005 18:33

Re: [IBX] Stored Procedure definieren
 
Ja, was geht denn dann nicht ? :shock:


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:06 Uhr.
Seite 1 von 2  1 2      

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