Case und While in einer Stored Procedure nutzen

Februar 21, 2019 - Lesezeit: ~1 Minute
execute block
returns
(txt varchar(10))
as
declare variable i int=1;
begin
  while (i<10) do begin
    txt=case i
       when 1 then 'Eins'
       when 2 then 'Zwei'
       when 3 then 'Drei'
       else '>3'
    end;
    i=i+1;
    suspend;
  end
end
Tags: Firebird

lokale Variable in Firebird mit einem Wert vorbelegen

Februar 21, 2019 - Lesezeit: ~1 Minute
declare variable i HW_INT16=2;
Tags: Firebird

Firebird: Ohrnummer bzw. Herdbuchnummer testen

Februar 23, 2017 - Lesezeit: ~1 Minute

Die Ohrnummer muss 14-stellig mit 2 Buchstaben und 12 Zahlen sein

OHR [not] similar to '[A-Z]{2}[0-9]{12}'

Die Herdbuchnummer ist 8 (mit BIC) oder 6-stellig nur mit Ziffern

HB [not] similar to '([0-9]{6}|[0-9]{8})'
Tags: Firebird SQL

nur Firebird - Client unter Ubuntu installieren

Mai 15, 2013 - Lesezeit: ~1 Minute
sudo apt-get install libfbclient2
Tags: Ubuntu Firebird Kubuntu

execute block - dynamische Proceduren

September 28, 2010 - Lesezeit: 3 Minuten

Eine SQL-Statement nutzen, das alle Merkmale der Stored Procedure aufweist, ohne das dieses in der Datenbank definiert ist. Das ist mit "EXECUTE BLOCK" möglich:

 

EXECUTE BLOCK [(<inparams>)]
      [RETURNS (<outparams>)] AS [<var-decls>]
 BEGIN
   PSQL statement(s)
 END
 
<inparams>   ::=  paramname type = ? [, <inparams>]
<outparams>  ::=  paramname type [, <outparams>] 
<var-decls>  ::=  <var-decl> [<var-decls>]
<var-decl>   ::=  DECLARE [VARIABLE] varname type [= initvalue]; 
 

Beispiel: Ausgabe von 100 Sätzen mit 2 Feldern

 

execute block 
returns (NR integer,Txt varchar(100))
as
declare variable i integer;
begin
  i=0;
  while (i<100) do begin 
    i=i+1;
    NR=i;
    Txt='Satz: '||i;
    suspend;
  end
end

 

 

Tags: Firebird

Firebird: Trigger für mehrere Ereignisse

September 15, 2010 - Lesezeit: ~1 Minute

ab Firebird 1.5 kann man einen Trigger erstellen, der für mehrere Ereignisse zuständig ist.

 


Beispiel:

 

 create trigger trigger_adressen for adressen  before insert or update or delete as
 begin
   ...
 end

 

 

 Um zu erkennen, in welche Aktion der Tabelle aufgerufen wurde, gibt es die neuen Variablen

 

INSERTING, UPDATING und DELETING 

 

Beispiel:

 

 create trigger trigger_adressen for adressen  before insert or update or delete as
 begin
   if (deleting) then proc(old.ID); else proc(new.ID);
 end

 

 

Tags: Firebird SQL