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...