Einzelnen Beitrag anzeigen

Benutzerbild von MrSpock
MrSpock
(Co-Admin)

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

AW: Firebird: Generator mit dynamischen Namen

  Alt 1. Sep 2015, 22:02
Jetzt hab ich es "fast" so, wie ich es haben wollte. Meine SP sieht wie folgt aus:

Code:
CREATE OR ALTER procedure GET_ERFNR (
    JAHR varchar(2) not null,
    WOCHE varchar(2) not null)
returns (
    ERFNR integer)
as
declare variable ANZ integer;
declare variable GEN_NAME varchar(10);
begin
  /* Procedure Text */
  gen_name = 'ERFNR' || Jahr || Woche;

  SELECT COUNT(1) from rdb$generators where rdb$generator_name = :gen_name into :anz;

  if (anz <> 1) then
    execute statement 'create sequence ' || gen_name;

  execute statement 'SELECT GEN_ID(' || gen_name || ', 1) from rdb$database';
  suspend;
end
Ich prüfe als, ob z.B. der Generator ERFNR1503 schon existiert und wenn nicht, erstelle ich ihn. Funktioniert einwandfrei.
Jetzt brauche ich nur noch den nächsten Wert üner GEN_ID, dazu habe ich die zweite execute statement Anweisung. Ich muss aber den Wert von dem Generator als Wert der SP zurückgeben, aber das will nicht funktionieren. Ich kann weder den Wert über "SELECT GE_ID ... into :ERFNR" noch über ERFNR = execute statement 'SELECT ...' oder über execute statement 'ERFNR = SELECT ...' in ERFNR zurückgeben.

Hat jemand eine Idee, wie ich den Wert des zweiten EXECUTE Statements zurückgebe?
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat