Einzelnen Beitrag anzeigen

Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
672 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Rave-Report mit Records aus zwei Datenbanken

  Alt 26. Dez 2015, 19:00
Hier ein Beispiel für ein execute block aus unserer letzten Schulung auf Basis der IBExpert Demo DB.

Der Block läuft in einer DB ab und verbindet sich immer innerhalb der Schleife mit der anderen DB.
Wenn die Daten in der eigentlichen DB bleiben, wäre das sicherlich performanter und 1GB ist noch lange kein
Grund, da was auszulagern, wir nutzen aber genau das Verfahren für sehr große Mengen von PDFs und Bildern,
da kommen pro Jahr gerne mal 100GB zusammen. Die werden dann immer jahresweise in Archivdatenbanken übertragen
und die sind dann nur noch readonly, brauchen daher auch nicht mehr gesichert werden.

Code:
execute block
returns
(customer_name varchar(200),
total_sales numeric(18,2))
as
declare variable customer_id bigint;
begin
  for
    select customer.firstname||' '||customer.lastname, customer.id
    from customer
    into customer_name , customer_id
  do
  begin
    execute statement ('select sum(orders.totalamount) from orders where orders.customer_id=:CUSTOMER_ID')(CUSTOMER_ID:=CUSTOMER_ID)
--    on external 'localhost/3050:d:\fet\db1.fdb'  --wennn es ein anderer FB Server ist, dann so
    on external 'd:\fet\db1.fdb'                   --sonst so, weil schneller, könnte auch der Firebird alias aus der aliases.conf sein
    as user 'SYSDBA' password 'masterke'
    into total_sales;
    suspend;
  end
end
Wenn du die zeile mit "as user ... password ... " weglässt, dann werden die Daten deiner aktuellen Connection genommen
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
IBExpert and Firebird Power Workshops jederzeit auch als Firmenschulung
  Mit Zitat antworten Zitat