Nuclos berechnete Attribute: Datenbankfunktion CA_, INTID-Parameter, SORT_CALCULATED_ATTRIBUTES, SQL-Beispiel, Ampel als Bild. |
Sprache: Deutsch · English
Attributwerte zur Laufzeit per Datenbankfunktion berechnen – inkl. SQL-Beispielen und Status-Ampeln.
Auf dieser Seite |
Statt einen festen Wert zu speichern, bezieht ein berechnetes Attribut seinen Inhalt aus einer Funktion auf Datenbankebene. Der Wert wird zur Laufzeit neu berechnet und angezeigt – ohne dass der Datensatz gespeichert werden muss. Typische Fälle: Jahresumsatz eines Artikels, berechnete Datumswerte, Status-Ampeln.
Berechnete Attribute verhalten sich fast wie normale Attribute (Anzeige in Layout und Suchergebnisliste), werden aber nicht in der Datenbank gespeichert. Ihr Wert kann daher auch nicht per Regel gesetzt werden; Referenzfelder lassen sich nicht berechnen.
Sparsam einsetzen: Die Berechnung kann – besonders bei Suchen und in Suchergebnislisten – sehr zeitintensiv werden. |
Die Sortierung berechneter Attribute in der Suchergebnisliste ist standardmäßig deaktiviert und lässt sich über den Parameter |
CA_ (Calculated Attribute).Berechnet Bestand − Reserviert. Der Übergabeparameter id ist die INTID des aktuellen Objekts; der Rückgabewert ist varchar2 (Attributwerte werden als String abgelegt).
CREATE OR REPLACE FUNCTION CA_ARTIKELVERFUEGBAR(id IN number) RETURN varchar2 IS
summe number(12);
bestand number(12);
reserviert number(12);
begin
SELECT strvalue INTO bestand
FROM t_ud_go_attribute
WHERE intid_t_md_attribute = (SELECT intid FROM t_md_attribute WHERE strattribute='artikelBestand')
AND intid_t_ud_genericobject = id;
SELECT strvalue INTO reserviert
FROM t_ud_go_attribute
WHERE intid_t_md_attribute = (SELECT intid FROM t_md_attribute WHERE strattribute='artikelReserviert')
AND intid_t_ud_genericobject = id;
summe:=bestand-reserviert;
RETURN(summe);
end CA_ARTIKELVERFUEGBAR; |
Ein berechnetes Attribut kann auch ein Bild liefern – ideal für Status-Ampeln. Die Bilder werden vorab als Ressourcen (Konfiguration → Sonstiges → Ressourcen) hochgeladen.

Ampel als berechnetes Attribut.
CREATE OR REPLACE FUNCTION C31G_CA_PROJEKT_VERFUEGBARKEIT(id numeric)
RETURNS bytea AS
$BODY$
DECLARE
ist numeric(9,2);
soll numeric(9,2);
bild bytea;
BEGIN
select dblfortschritt, dblusedbudget / dblworkingbudget * 100 into ist, soll from c31g_projekt where intid=id;
if (ist = 100) then
bild := null;
else
if (ist >= soll) then
select blbcontent into bild from t_md_resource where strname = 'Ampel grün';
else
select blbcontent into bild from t_md_resource where strname = 'Ampel rot';
end if;
end if;
RETURN bild;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100; |
Im BO-Assistenten wird das berechnete Attribut in Schritt 7 (Attributdefinitionen) verlinkt.
Verknüpfung im BO-Assistenten.