Einzelnen Beitrag anzeigen

Robert_G
(Gast)

n/a Beiträge
 
#1

FireBird's native dynamic SQL und Variablen

  Alt 14. Feb 2005, 11:06
Datenbank: FireBird • Version: 1.5 • Zugriff über: FireBird .Net DataProvider (in dem Fall aber uninteressant)
Moin FB'ler (innen)

Wie sollt's nicht anders sein... Ich stehe mal wieder auf dem Schlauch.

Ich würde gerne per dynamic SQL unter Angabe des Tabellennamens den nächsten Wert aus dem Generator bekommen.
Dumm ist nur, dass ich NIRGENDS finden kann wie man Variablen in einem dynamischen Block deklariert.
Die Doku von FireBird schweigt sich hier aus. (wie bei eigentlich allem anderem auch )
Ich habe es also zuerst so probiert: (rein "experimentelles Konstrukt" ohne ExceptionHandling & Co... )
Delphi-Quellcode:
create procedure GetID (TableName varchar(55))
returns (NewID integer)
as
begin
  execute statement 'declare variable NewID integer; '||
                    'begin '||
                    ' :NewID = GEN_ID(GEN_'|| :TableName ||'_ID,1); '||
                    'end;'
    into :NewID;
  suspend;
end
Fehler!
Weitere erfolglose Versuche:
  • Delphi-Quellcode:
    execute statement 'declare variable NewID integer; '||
                      'begin '||
                      ' NewID = GEN_ID(GEN_'|| :TableName||'_ID,1); '||
                      'end;'
      into :NewID;
  • Delphi-Quellcode:
    execute statement 'begin '||
                      ' :NewID = GEN_ID(GEN_'|| :TableName||'_ID,1); '||
                      'end;'
      into :NewID;
  • Delphi-Quellcode:
    execute statement ' :NewID = GEN_ID(GEN_'|| :TableName||'_ID,1)'
      into :NewID;

Weiß hier jemand: Wie ich Variablen in einem dynamischen Block deklarieren und verwenden kann?
Firebird springt ja gerne zwischen den Schreibweisen :[Var] & [Var] hin und her.
  Mit Zitat antworten Zitat