Loading

AMPscript-Logik zur Behandlung von leeren oder Null-Werten

Veröffentlichungsdatum: Jan 28, 2025
Beschreibung
AMPscript-Funktionen haben erforderliche Parameter. Wenn an einen erforderlichen Parameter ein leerer oder Null-Wert übergeben wird, schlägt der gesamte Funktionsaufruf fehl. Dies führt in der Regel dazu, dass ein E-Mail-Versand fehlschlägt, CloudPages nicht dargestellt werden oder andere unerwünschte Szenarien auftreten. Nachstehend finden Sie ein Beispiel für einen möglichen Fehler.
Invalid value specified for function parameter.
  Function Name: Multiply
  Parameter Name: Value2
  Parameter Ordinal: 2
  Parameter Type: Numeric
  Submitted Value:
In diesem Fehler ist der gesendete Wert für den zweiten Parameter in der Funktion "Multiply(1,2)" null oder leer.
 
Lösung

Konfiguration von Data Extensions


Eine Möglichkeit, dieses Problem zu verhindern, besteht darin, Ihre Data Extensions so zu gestalten, dass leere oder Null-Werte nicht zulässig sind. Wenn Sie eine Data Extension in Contact Builder erstellen, wird beim Erstellen der Felder für Ihre Data Extension das Kontrollkästchen "Erforderlich" angezeigt. Mit dem Kontrollkästchen "Erforderlich" wird sichergestellt, dass der Data Extension keine Daten ohne Wert hinzugefügt werden. Des Weiteren gibt es eine Option für einen "Standardwert".  Durch Verwendung eines "Standardwerts" für ein Attribut werden leere oder Null-Werte nicht zugelassen, Importe oder SQL-Abfragen zum Hinzufügen von Zeilen ohne Werte für die erforderlichen Felder sind jedoch erlaubt. 

Hinweis: Die Verwendung eines erforderlichen Felds ohne Standardwert kann dazu führen, dass Prozesse wie Importe oder SQL-Abfragen mit einer Fehlermeldung wie "Cannot insert a NULL value into a non-nullable column" (Ein NULL-Wert kann nicht in eine nicht nullfähige Spalte eingefügt werden) fehlschlagen. Testen Sie alle Prozesse, die mit einer Data Extension mit dieser Konfiguration interagieren, bevor sie live geschaltet wird. 
 

AMPscript-Logik zur Behandlung von leeren oder Null-Werten


Wenn die Data Extension bereits vorhanden ist und nicht neu erstellt werden kann oder wenn es in Ihrem Unternehmen Szenarien gibt, bei denen ein leerer oder Null-Wert sinnvoll ist, gibt es immer noch Lösungen für dieses Problem. AMPscript bietet Inhaltserstellern die nötige Flexibilität, um diesen Szenarien Rechnung zu tragen.

Sehen wir uns ein Beispiel an. Angenommen, die unten stehende Data Extension namens "OrderConfirmation" wird in einer E-Mail referenziert.
 
ContactKey (abc)EmailAddress (@)OrderNumber (abc)Price (.00)DiscountPrice (.00)
Example1Example1@example.com12345100.0080.00
Example2Example2@example.com23456108.00 

Der in einer E-Mail ausgeführte AMPscript-Code ist unten dargestellt.
 
%%[
Set @price = Lookup("OrderConfirmation","DiscountPrice","ContactKey",_subscriberkey)

Set @tax = "0.08"
]%%

Price: %%=v(@price)=%%
<br><br>

%%[SET @total = FormatNumber(multiply(@price,@tax),"C2", "en-US")]%%

Price with Logic: %%=v(@price)=%%
<br><br>

Your tax is %%=v(@total)=%%

Wir möchten die Variable "@price" gleich dem Wert "DiscountPrice" in der Data Extension "OrderConfirmation" basierend auf dem "ContactKey" setzen, an den wir senden. Um das problematische Verhalten zu veranschaulichen, setzen wir die Variable "@tax" auf einen statischen Wert von "0.08". Später drucken wir die Variable "@price" mit der Funktion "v()" in der E-Mail aus. Für die beiden Beispielzeilen können wir die Variable ohne Fehler drucken. In der ersten Zeile wird "Price: 80.00" und in der zweiten "Price: " angegeben. Probleme treten später im Code auf, wenn wir versuchen, die Variable "@total" mit der Funktion "Multiply" zu berechnen. In der Vorschau und beim Test des ersten Kontakts "Example1" wird die letzte Zeile als "Your tax is $6.40" dargestellt. Wenn wir jedoch "Example2" testen, erhalten wir ein Fehlerbanner ähnlich dem folgenden. 
 
Invalid value specified for function parameter.
  Function Name: Multiply
  Parameter Name: Value1
  Parameter Ordinal: 1
  Parameter Type: Numeric
  Submitted Value:

Wenn wir eine Codezeile hinzufügen, um den leeren oder Null-Wert für "DiscountPrice" zu berücksichtigen, schlägt der Funktionsaufruf nicht mehr fehl.
 
%%[
Set @price = Lookup("OrderConfirmation","DiscountPrice","ContactKey",_subscriberkey)

Set @tax = "0.08"
]%%

Price: %%=v(@price)=%%
<br><br>

%%[IF empty(@price) THEN 
SET @price= Lookup("OrderConfirmation","Price","ContactKey",_subscriberkey)
ENDIF]%% 

%%[SET @total = FormatNumber(multiply(@price,@tax),"C2", "en-US")]%%

Price with Logic: %%=v(@price)=%%
<br><br>

Your tax is %%=v(@total)=%%

Die IF/THEN-Logik sucht nach der Variablen "@price", die ursprünglich gleich dem Wert "DiscountPrice" aus der Data Extension "OrderConfirmation" gesetzt wurde. Mit der Funktion "Empty()" prüfen wir, ob der Wert null oder leer ist. Ist dies der Fall, setzen wir die Variable "@price" stattdessen auf einen anderen Feldwert, und zwar "Price". Unter der Annahme, dass "Price" ein Pflichtfeld ist, sollte dies das Auftreten von Fehlern in der Funktion "Multiply" aufgrund von leeren oder Null-Werten verhindern. 
 

Ressourcen

Nummer des Knowledge-Artikels

000393055

 
Laden
Salesforce Help | Article