Einzelnen Beitrag anzeigen

Benutzerbild von MrSpock
MrSpock
(Co-Admin)

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

SQL Statement CREATE or ALTER PROCEDURE Fehler

  Alt 18. Dez 2015, 16:34
Datenbank: Firebird • Version: 2,5 • Zugriff über: IBDAC
Hallo,

habe folgendes SQL Statement in einer Datei:

Code:
CREATE OR ALTER procedure GET_VNR (
    INJAHR integer,
    INART char(1))
returns (
    SVNUMMER varchar(5))
as
declare variable AKTJAHR integer;
declare variable AKTWOCHE integer;
declare variable NR integer;
declare variable VNUMMER integer;
begin
  /* Procedure Text */
  VNUMMER = 0;
  select JAHR
  from AKTUELL
  where VORGANG = :INART
  into :AKTJAHR;
  /* aktuelles Jahr */
  if (INJAHR = AKTJAHR) then
    VNUMMER = iif(INART = 'A', gen_id(VNR_A, 1), gen_id(VNR_V, 1));
  else
  /* neues Jahr */
      if (INJAHR > AKTJAHR) /* Jahreswechsel */ then
      begin
        if (INART = 'A') then
          execute statement 'alter sequence vnr_a restart with 0';
        else
          /* art = 'V' */
          execute statement 'alter sequence vnr_v restart with 0';
        update AKTUELL
        set JAHR = :INJAHR
        where VORGANG = :INART;
        VNUMMER = iif(INART = 'A', gen_id(VNR_A, 1), gen_id(VNR_V, 1));
      end
      else
      begin
        /* altes Jahr -> wird ohne Generatoren gelöst */
        select max(VORGANGSNUMMER)
        from VORGANGKOPF VK
        where VK.VORGANGSART = :INART and
              cast(Substr(Woche, 4, 5) as integer) = :injahr
        into :NR;
        VNUMMER = NR + 1;
      end

  SVNUMMER = cast(VNUMMER as varchar(5));
  while (char_length(SVNUMMER) < 5) do
    SVNUMMER = '0' || SVNUMMER;
  suspend;
end;
Diese Datei lade ich und führe sie aus:

Delphi-Quellcode:
...IBSQLDD.SQL.LoadFromFile(fname);
      ShowMessage(IBSQLDD.SQL.Text);
      IBSQLDD.Transaction.StartTransaction;
      IBSQLDD.ExecQuery;...
Dabei erhalte ich den Fehler:

Zitat:
---------------------------
Fehler
---------------------------
unsuccessful metadata update
MODIFY RDB$PROCEDURES failed
Malformed string
---------------------------
OK
---------------------------
Das gleiche Statement in den SQL Editor von IBExpert eingegeben funktioniert ohne Probleme.

Hat jemand eine Idee?
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat