Richtlinien für die Verwendung benutzerdefinierter Makros
Beachten Sie beim Erstellen bzw. Verwenden von Makros die folgenden Richtlinien:
*
*
Wenn eine Datenquelle mit der Eigenschaft ENABLE_SELECT_SORT_BY = TRUE konfiguriert wurde, müssen Sie benutzerdefinierte SQL-Makros mit einer SORTIEREN NACH-Klausel versehen. Nur so werden die zurückgegebenen Datensätze anhand der Zielgruppenschlüsselfelder der Zielgruppenebene sortiert, auf der Sie arbeiten. Andernfalls wird für das Makro bei einem Prozess "Momentaufnahme" in einem abgeleiteten Feld und bei nicht erwartungsgemäßer Reihenfolge eine Fehlernachricht ausgegeben.
*
*
Greift ein benutzerdefiniertes Makro auf temporäre Segmenttabellen zurück, wird der Datenbank zwangsläufig eine temporäre Segmenttabelle übermittelt, damit der Code ordnungsgemäß ausgeführt werden kann.
Wird ein benutzerdefiniertes Makro in einem SELECT-Befehl höchster Ebene verwendet, stehen keine Verlaufsinformationen zur Verfügung, mit deren Hilfe Campaign der Datenbank eine temporäre Segmenttabelle übergeben könnte. Folge ist, dass der Code nicht ordnungsgemäß ausgeführt werden kann.
Das bedeutet für Sie, dass Sie beim Erstellen eines benutzerdefinierten Makros mit direktem SQL unter Umständen zwei Versionen des gleichen benutzerdefinierten Makros erstellen müssen. Eines davon verwendet Tokens temporärer Tabellen, das andere nicht.
Das benutzerdefinierte Makro, das ohne Tokens von temporären Tabellen auskommt, sollte auf der obersten Hierarchieebene verwendet werden (z. B. im ersten SELECT-Befehl). Das Makro mit Tokens temporärer Tabellen lässt sich an jeder anderen Stelle der Struktur einsetzen, an der solch ein Einsatz vorteilhaft erscheint.
*
Wenn Sie z. B. ein auf direktem SQL basierendes, benutzerdefiniertes Makro verwenden, das einen Wert zurückgibt (z. B. in einem Prozess "Momentaufnahme"), und Sie das benutzerdefinierte Makro sowie ein anderes Feld aus der Tabelle ausgeben, auf dem das benutzerdefinierte Makro basiert, nimmt Campaign eine eigenständige Verknüpfung der Tabelle vor. Wenn die Tabelle nicht normalisiert wurde, erhalten Sie ein kartesisches Produkt (d. h. die Anzahl der angezeigten Datensätze ist größer als erwartet).
*
Zur Laufzeit wird das benutzerdefinierte Makro aufgelöst, indem seine Definition in der Systemtabelle UA_CustomMacros (dort sind die Definitionen gespeichert) ermittelt und das Makro anschließend eingesetzt/ausgeführt wird.
*
Campaign unterstützt gespeicherte Abfragen aus früheren Versionen. Jedoch müssen Sie bei Verweisen auf nicht eindeutige gespeicherte Abfragen die alte Syntax verwenden.
gespeicherteAbfrage(<Abfragename>)
*
Beim Auflösen von Benutzervariablen in benutzerdefinierten Makros verwendet Campaign den beim Prüfen der Syntax aktuellen Wert der Benutzervariable. Ist der aktuelle Wert leer, wird von Campaign eine Fehlernachricht ausgegeben.
*
*
Wenn Sie vorhaben, ein benutzerdefiniertes Makro über mehrere Datenbanken hinweg einzusetzen, ist es unter Umständen besser, einen IBM® -Ausdruck zu verwenden anstatt auf direktes SQL zurückzugreifen. Direktes SQL ist in der Regel datenbankspezifisch.
*
*
In Campaign werden Kommas als Trennzeichen für Parameter behandelt. Wenn Sie in einem Parameter Kommas als Text verwenden möchten, müssen Sie den Text wie im folgenden Beispiel illustriert in geschweifte Klammern ({}) einschließen:
TestCM( {STRING_CONCAT(UserVar.Test1, UserVar.Test2) } )
*
Campaign unterstützt die einfache Ersetzung von Parametern in Benutzerdefinierten Makros mit Hilfe von direktem SQL-Code. Wenn Sie beispielsweise in einem Ablaufdiagramm ein Auswahlprozessfeld mit der folgenden Abfrage einrichten:
exec dbms_stats.gather_table_stats(tabname=> <temptable>,ownname=> 'autodcc')
fügt Campaign anstelle des Tokens <temptable> erfolgreich den Namen der aktuellen temporären Tabelle ein. Beachten Sie, dass die einfachen Anführungszeichen um den Tabellennamen erforderlich sind.
In den folgenden Tabellen wird erläutert, wie Campaign benutzerdefinierte Makros in Abfragen und abgeleiteten Feldern behandelt.
Benutzerdefinierte Makros in Abfragen und abgeleiteten Feldern (Prozesse "Auswählen", "Segmentieren" und "Zielgruppe")
Wird der Wert nicht auf diese Art eingesetzt, wird von Campaign ein Wert ungleich null bei einer ID-Auswahl als TRUE ausgewertet. Ein Wert gleich null oder eine Zeichenkette ergeben FALSE.
IBM® -Ausdruck
In einer Direkt-SQL-Abfrage (Prozesse "Auswählen", "Segmentieren" und "Zielgruppe")
IBM® -Ausdruck