![]() |
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:
Diese Query Lade ich wie folgt in die SQL Eigenschaft einer IBQuery oder einer IBSQL Komponente:
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; ...
Delphi-Quellcode:
Das ShowMessage habe ich nur reingepackt, um zu sehen, dass auch die richtige Anweisung geladen wird.
IBSQLAdmin.SQL.LoadFromFile(fname);
ShowMessage(IBSQLAdmin.SQL.Text); IBSQLAdmin.Transaction.StartTransaction; IBSQLAdmin.ExecQuery; 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] |
Re: [IBX] Stored Procedure definieren
Hi,
hast Du schon mal versucht das Teil in der TIBScript laufen zu lassen? Grüße Lemmy |
Re: [IBX] Stored Procedure definieren
Hallo Lemmy,
nein, probiere ich aber heute Abend einmal. |
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 |
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. |
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 |
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: |
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) |
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: |
Re: [IBX] Stored Procedure definieren
Ja, was geht denn dann nicht ? :shock:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:06 Uhr. |
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