Einzelnen Beitrag anzeigen

Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#3

Re: Interbase StoredProc anlegen. Fehlermeldung

  Alt 21. Aug 2006, 17:28
Wenn ich es richtig sehe, musst Du das SELECT-Ergebnis in eine Variable speichern, damit Du es für den Rückgabewert verwenden kannst; und das fehlt (ich habe die Prozedur entsprechend geändert):
Zitat von Sven Janssen:
SQL-Code:
SET TERM ^;
create procedure nextFreeLiefNumber ( lBound char(7), uBound char(7))
    returns (A_RETURN INTEGER)
AS
  CREATE VARIABLE freienummer INTEGER; /*  den richtigen Typ musst Du eintragen  */
begin
    SELECT o.L1_NR FROM FLIEF_1 o where o.L1_nr between lBound and uBound
        AND NOT EXISTS (SELECT i.L1_NR FROM FLIEF_1 i
             WHERE cast(i.L1_NR as double precision) = cast(o.L1_NR as double precision)
                                                     + cast(1 as double precision))
      INTO :freienummer;
    A_RETURN = cast(freienummer as double precision)+1;
    SUSPEND; /*  das fehlte außerdem, wie mkinzler anmerkte  */
end
SET TERM ;^
Die Fehlermeldungen verwirren, weil IB nach dem Ende des SELECT-Befehls noch etwas erwartet, nämlich INTO.

Du musst aber aufpassen, dass dieser SELECT wirklich immer nur einen Wert liefert; andernfalls erhältst Du zur Laufzeit eine neue unerklärliche Fehlermeldung.

War's das? Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat