Einzelnen Beitrag anzeigen

Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#1

[IBX] Stored Procedure definieren

  Alt 20. Mär 2005, 22:57
Datenbank: Firebird • Version: 1.0.3 • Zugriff über: IBX
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]
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat