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?