Einzelnen Beitrag anzeigen

lowmax_5

Registriert seit: 9. Mai 2003
Ort: Münster, NRW
258 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: TQuery (TIBCQuery) - mehrere Master-Detailverbindungen komplett durchlaufen

  Alt 30. Okt 2015, 15:58
Folgende Tabellen sind gegeben:

Code:
CREATE TABLE KUNDEN (
    KUNDENID INTEGER,
    NAME     VARCHAR(10)
);

CREATE TABLE RECHNUNG (
    ID       INTEGER,
    KUNDENID INTEGER,
    NR       VARCHAR(10),
    BETRAG   INTEGER
);

CREATE TABLE TABELLE3 (
    IDTAB3  INTEGER
);

Und folgende Stored Prodecure als Beispiel:


Code:
SET TERM ^ ;

CREATE OR ALTER PROCEDURE TEST_PROCEDURE (
    I_RECH INTEGER,
    I_TAB3 INTEGER)
RETURNS (
    O_KUNDENID INTEGER,
    O_NAME VARCHAR(10),
    O_ID INTEGER,
    O_NR VARCHAR(10),
    O_BETRAG INTEGER,
    O_PAR1 INTEGER,
    O_IDTAB3 INTEGER,
    O_PAR2 INTEGER)
AS
begin
for
 select KUNDENID,NAME from KUNDEN
 into :O_KUNDENID,:O_NAME
do
begin

    if (I_RECH=1) then
    for
     select ID, NR,BETRAG from RECHNUNG
     WHERE KUNDENID=:O_KUNDENID
     into :O_ID,:O_NR,:O_BETRAG
    do
    begin
     O_PAR1=100;
    end

    if (I_TAB3=1) then
    for
     select IDTAB3 FROM Tabelle3
     into :O_IDTAB3
    DO
    begin
     O_PAR2=200;
    end
end

end^

SET TERM ; ^

Du kannst nun mittels der Eingangsparameter 'I_RECH' und 'I_TAB3' die Datenmengen quasi dazuschalten.

I_RECH=1 : Rechnungdaten da AUFRUF:SELECT * FROM TEST_PROCEDURE(1, 0)
I_TAB3=1 : Daten aus Tabelle 3 da AUFRUF:SELECT * FROM TEST_PROCEDURE(0, 1)

Innerhalb der Stored Procedure kann so die Logik einfach verändert werden. Als Ausgabe gibt es immer eine entsprechende Tabelle.
Ich hoffe, dass cih es einigermassen erklären konnte...
  Mit Zitat antworten Zitat