Wie kann ich Funktionen nur einmal ausführen? Statische Werte
Verfasst: Mi 4. Jul 2018, 13:41
Hallo zusammen,
ich habe eine Zuweisungstabelle für Mandanten. Hier gibt es einen Quell- und einen Ziel-Mandanten für jede Tabelle im System. Darüber werden abweichende Stammdaten gesteuert. Also zum Beispiel Adressdaten für einen Konzern. Diese werden im Stammmandanten gepflegt und stehen den Kindmandanten zur Verfügung.
Die Tabelle sieht folgendermaßen aus:
Nun habe ich eine Funktion geschrieben, die für jeden Mandanten die Zieltabellen (Ziel-ID) ermittelt. Diese Abfrage ist jedoch sehr langsam:
Anscheinend wird für jede Zeile von TBL_ADDRESS_TYPE die Funktion neu ausgeführt, was zur langen Abfrage führt. Die Rückgabe ändert sich ja zu keinem Zeitpunkt. Gibt es einen Weg wie ich einen Wert ermittle und diesen während der Abfrage statisch halten kann?
Dank und Gruß
Martin
ich habe eine Zuweisungstabelle für Mandanten. Hier gibt es einen Quell- und einen Ziel-Mandanten für jede Tabelle im System. Darüber werden abweichende Stammdaten gesteuert. Also zum Beispiel Adressdaten für einen Konzern. Diese werden im Stammmandanten gepflegt und stehen den Kindmandanten zur Verfügung.
Die Tabelle sieht folgendermaßen aus:
Code: Alles auswählen
CREATE TABLE TBL_CLIENT_TABLE
(
CLIENT_ID Bigint DEFAULT 1 NOT NULL -- ID des anfragenden Mandanten,
TABLE_NAME Varchar(31) NOT NULL -- Tabellenname,
CLIENT_ID_DST Bigint NOT NULL -- ID des Zielmandanten,
CREATOR_ID Bigint,
CREATE_TIME Timestamp DEFAULT current_timestamp,
EDITOR_ID Bigint,
EDIT_TIME Timestamp DEFAULT current_timestamp,
CONSTRAINT PK_CLIENT_TABLES PRIMARY KEY (CLIENT_ID,TABLE_NAME)
);
Code: Alles auswählen
select count(*)
from TBL_ADDRESS_TYPE
where client_id = FNC_MASTER_CLIENT(3, 'TBL_ADDRESS_TYPE ');
Dank und Gruß
Martin