GlideDBFunctionBuilder – Scoped, Global
Die GlideDBFunctionBuilder- API bietet Methoden zum Erstellen von Funktionen zum Ausführen von SQL-Vorgängen in der Datenbank.
Diese Methoden bieten eine Möglichkeit, RDBMS-Funktionen (Relational Database Management System) zu erstellen, um SQL-Vorgänge für Datensatzdaten auszuführen. Sie können diese Methoden sowohl in bereichsbezogenen als auch in globalen Serverskripts verwenden.
- Erstellen Sie eine Funktion mit dem GlideDBFunctionBuilder-Konstruktor und zugehörigen Methoden.
- Nach dem Erstellen einer Funktion wenden Sie die Funktion mit der addFunction()- Methode der GlideRecord -Klasse auf den aktuellen Datensatz an.
- Fügen Sie die Funktion einer Abfrage hinzu, indem Sie die addQuery()- Methode der GlideRecord -Klasse verwenden.
- Rufen Sie die Ergebnisse der Funktion mit den vorhandenen GlideRecord- API-Methoden wie getValue() und getElement() ab.
Beispiel:
var functionBuilder = new GlideDBFunctionBuilder();
var dbFunction = functionBuilder.position();
dbFunction = functionBuilder.constant('my'); // search_term: Text to search for in the specified table column.
dbFunction = functionBuilder.field('short_description'); // column: Name of the table column to search.
dbFunction = functionBuilder.build();
gs.log(dbFunction);
var gr_incident = new GlideRecord('incident'); // Table containing the column to search
gr_incident.addFunction(dbFunction);
gr_incident.addQuery("short_description", "CONTAINS", "my");
gr_incident.setLimit(20);
gr_incident.query();
while(gr_incident.next()) {
gs.info(gr_incident.short_description + "\n position('my', short_description): " + gr_incident.getValue(dbFunction));
}
Weitere Informationen zu Funktionsfeldern finden Sie unter Function field.
Scoped GlideDBFunctionBuilder – GlideDBFunctionBuilder()
Instantiiert ein GlideDBFunctionBuilder-Objekt.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
var builder = new GlideDBFunctionBuilder();
Bereichsbezogener GlideDBFunctionBuilder – andFunc(expr1, expr2, …)
Beginnt einen neuen UND-Ausdruck, der nur dann „wahr“ zurückgibt, wenn alle ihm als Parameter bereitgestellten Ausdrücke „wahr“ sind. Mindestens ein Ausdruck mit einem booleschen Wert muss als Parameter angegeben werden.
| Name | Typ | Beschreibung |
|---|---|---|
| Ausdruck | GlideFunction-Ausdruck mit booleschem Wert | Derzeit erfüllen die Glide-Funktionen and(), or()und vergleichendiese Kriterien. |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Der resultierende GlideFunction-Ausdruck. |
Das folgende Beispiel zeigt, wie eine einfache Fallanweisung definiert und erstellt wird.
var expr = new GlideDBFunctionBuilder()
.andFunc()
.compare().field('first_name').constant('=').constant('John').endfunc()
.compare().field('active').constant('=').constant(1).endfunc()
.endfunc()
.build();
gs.info("Expression: " + expr);
Ausgabe:
Expression: glidefunction:and(compare(first_name,'=','John'),compare(active,'=','1'))
Scoped GlideDBFunctionBuilder – add()
Fügt die Werte von zwei oder mehr Ganzzahlfeldern hinzu.
Verwenden Sie die field(String field)-Methode zum Definieren von Feldern, in denen der Vorgang ausgeführt wird.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| void |
var functionBuilder = new GlideDBFunctionBuilder();
var myAddingFunction = functionBuilder.add();
myAddingFunction = functionBuilder.field('order');
myAddingFunction = functionBuilder.field('priority');
myAddingFunction = functionBuilder.build();
Scoped GlideDBFunctionBuilder – build()
Erstellt die Datenbankfunktion, die vom GlideDBFunctionBuilder-Objekt definiert wird.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| void |
var functionBuilder = new GlideDBFunctionBuilder();
var myAddingFunction = functionBuilder.add();
myAddingFunction = functionBuilder.field('order');
myAddingFunction = functionBuilder.field('priority');
myAddingFunction = functionBuilder.build();
gs.info(myAddingFunction);
*** Script: glidefunction:add(order,priority)Bereichsbezogener GlideDBFunctionBuilder – zusammenfügen ()
Verwendet eine beliebige Anzahl von durch Kommas getrennten Feldern als Eingabe und gibt den ersten nicht leeren Wert zurück.
| Name | Typ | Beschreibung |
|---|---|---|
| Argument | Zeichenfolge | Eine Liste, die einen konstanten Wert (Zeichenfolgen, Objekte, boolesche Werte) oder ein Feld enthält. Akzeptiertes Format: glidefunction:coalesce(<string, string, string, etc.> ) . Ein Argument kann eine beliebige Anzahl von Parametern haben, muss jedoch mindestens einen definierten Parameter aufweisen. |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Der erste Wert in der Argumentliste, der nicht NULL ist. Wenn keine Werte ungleich Null sind, wird Null zurückgegeben. Wenn bei der Erstellung des Funktionsobjekts keine Argumente angegeben werden, wird „ungültige Funktion“ als Zeichenfolge zurückgegeben. |
Die folgende Beispielanforderung zeigt, wie die Funktion des Koaleszenzleitfadens so formatiert wird, dass gemäß den Feldern closed_at, resolved_at und sys_updated_on NULL-Werte zurückgegeben werden.
var gr = new GlideRecord('incident');
var func = "glidefunction:coalesce(closed_at, resolved_at,sys_updated_on)";
gr.addFunction(func);
gr.query();
while(gr.next())
gs.info(gr.getValue(func));
Das Skript gibt für jeden Incident-Datensatz in der Incident-Tabelle den ersten Nicht-Null-Wert aus einem Feld in der Liste [closed_at, resolved_at, sys_updated_on] zurück und gibt den Wert mit gs.info aus.
2016-12-14 02:46:44
2018-01-09 22:55:16
2018-01-07 22:54:55
2018-01-13 23:02:54
2018-01-09 23:12:02
Bereichsbezogener GlideDBFunctionBuilder – vergleichen (exp1, op, exp2)
Beginnt einen neuen COMPARE-Ausdruck, der einen Vergleich zwischen zwei Ausdrücken durchführt.
| Name | Typ | Beschreibung |
|---|---|---|
| exp1 | Zeichenfolge | Vergleichsausdruck links. Kann eine Konstante, ein Verweis auf ein Feld oder eine andere Glide-Funktion sein. |
| Op | Zeichenfolge | Ein Vergleichsoperator, der in Anführungszeichen eingeschlossen ist. Akzeptierte Werte:
|
| exp2 | Zeichenfolge | Rechter Vergleichsausdruck. Kann eine Konstante, ein Verweis auf ein Feld oder eine andere Glide-Funktion sein. |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Der resultierende GlideFunction-Ausdruck. |
Das folgende Beispiel zeigt, wie Sie einen GlideFunktionsausdruck mit der vergleichen()-Operation erstellen. Nach dem Aufruf von vergleichen ()müssen drei weitere Aufrufe durchgeführt werden, um jeden der drei erforderlichen Parameter anzugeben. Dies wird dann durch einen einzelnen Aufruf von endfun() abgeschlossen. Im Folgenden erstellen wir zwei separate Vergleichsausdrücke () und stellen sie als Parameter für den Ausdruck or () bereit.
var expr = new GlideDBFunctionBuilder()
.orFunc()
.compare().field('first_name').constant('=').constant('John').endfunc()
.compare().field('active').constant('=').constant(1).endfunc()
.endfunc()
.build();
Ausgabe:
Expression: glidefunction:or(compare(first_name,'=','John'),compare(active,'=','1'))
Scoped GlideDBFunctionBuilder – concat()
Verkettet die Werte von zwei oder mehr Feldern.
Verwenden Sie die field(String field)-Methode zum Definieren von Feldern, in denen der Vorgang ausgeführt wird.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| void |
var functionBuilder = new GlideDBFunctionBuilder();
var myConcatFunction = functionBuilder.concat();
myConcatFunction = functionBuilder.field('short_description');
myConcatFunction = functionBuilder.field('caller_id.name');
myConcatFunction = functionBuilder.build();
Scoped GlideDBFunctionBuilder – constant(String constant)
Definiert einen konstanten Wert, der in der Funktion verwendet werden soll. Bei Verwendung mit der dayofweek()-Methode definiert die Zeichenfolge, ob Sonntag oder Montag als erster Tag der Woche verwendet werden soll.
| Name | Typ | Beschreibung |
|---|---|---|
| constant | Zeichenfolge | Ein konstanter Wert, der in einer Funktion verwendet wird. Bei Verwendung mit der dayofweek()-Methode definiert die Wert, ob die Woche an einem Sonntag oder Montag beginnt.
Diese Definition aktiviert die dayofweek()-Methode, um den korrekten Wochentag eines bestimmten Datums zurückzugeben. Wenn ein anderer Wert als 1 oder 2 angegeben ist, verwendet die dayofweek()-Methode Sonntag als ersten Tag der Woche. |
| Typ | Beschreibung |
|---|---|
| void |
Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.
var functionBuilder = new GlideDBFunctionBuilder();
var dbFunction = functionBuilder.position();
dbFunction = functionBuilder.constant('my');
dbFunction = functionBuilder.field('short_description');
dbFunction = functionBuilder.build();
gs.log(dbFunction);
var g = new GlideRecord('incident');
g.addFunction(dbFunction);
g.addQuery("short_description", "CONTAINS", "my");
g.setLimit(20);
g.query();
while(g.next()) {
gs.info(g.short_description + "\n position('my', short_description): " + g.getValue(dbFunction));
}
Scoped GlideDBFunctionBuilder – datediff()
Bestimmt die Dauer anhand eines bestimmten Startdatums/-zeit und eines Enddatums/-zeit.
Verwenden Sie die field(String field)-Methode zum Definieren von Start- und Enddatums/-zeit-Feldern
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| void |
var functionBuilder = new GlideDBFunctionBuilder();
var myDateDiffFunction = functionBuilder.datediff();
myDateDiffFunction = functionBuilder.field('sys_updated_on');
myDateDiffFunction = functionBuilder.field('opened_at');
myDateDiffFunction = functionBuilder.build();
Scoped GlideDBFunctionBuilder – dayofweek()
Gibt eine Ganzzahl zurück, die den Wochentag für ein bestimmtes Datum darstellt.
Verwenden Sie die field(String field)-Methode zum Definieren des bestimmten Enddatums/-zeit. Verwenden Sie die constant(String constant)-Methode, um zu definieren, ob die Woche an einem Sonntag oder Montag beginnt.
Diese Methode kann nur mit MySQL-, Oracle- und Microsoft SQL Server-Datenbanken verwendet werden. Wenn Sie eine Oracle-Datenbank verwenden, muss die Einstellung NLS_TERRITORY auf ein Gebiet mit Sonntag als ersten Tag der Woche festgelegt werden.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Ganzzahl | Wenn Sonntag in der constant(String constant)-Methode als erster Wochentag festgelegt ist, werden Rückgabewerte den folgenden Wochentagen zugeordnet:
Wenn Montag als erster Wochentag festgelegt ist:
Wenn in der constant(String constant)-Methode ein anderer Wert als 1 oder 2 angegeben ist, verwendet die dayofweek()-Methode Sonntag als ersten Tag der Woche. |
var functionBuilder = new GlideDBFunctionBuilder();
var dayOfWeekFunction = functionBuilder.dayofweek();
dayOfWeekFunction = functionBuilder.field('opened_at');
dayOfWeekFunction = functionBuilder.constant('2');
dayOfWeekFunction = functionBuilder.build();
var now_GR = new GlideRecord('incident');
now_GR.addFunction(dayOfWeekFunction);
now_GR.query();
while(now_GR.next())
gs.log(now_GR.getValue(dayOfWeekFunction));
Scoped GlideDBFunctionBuilder – divide()
Dividiert den Wert eines ganzzahligen Feldes durch ein anderes.
Verwenden Sie die field(String field)-Methode zum Definieren von Feldern, in denen der Vorgang ausgeführt wird.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| void |
var functionBuilder = new GlideDBFunctionBuilder();
var myDivideFunction = functionBuilder.divide();
myDivideFunction = functionBuilder.field('order');
myDivideFunction = functionBuilder.field('priority');
myDivideFunction = functionBuilder.build();
Scoped GlideDBFunctionBuilder – field(String field)
Definiert ein Feld, in dem ein SQL-Vorgang ausgeführt wird.
| Name | Typ | Beschreibung |
|---|---|---|
| field | Zeichenfolge | Das Feld, in dem Sie den SQL-Vorgang durchführen. |
| Typ | Beschreibung |
|---|---|
| void |
var functionBuilder = new GlideDBFunctionBuilder();
var myAddingFunction = functionBuilder.add();
myAddingFunction = functionBuilder.field('order');
myAddingFunction = functionBuilder.field('priority');
myAddingFunction = functionBuilder.build();
Scoped GlideDBFunctionBuilder – length()
Legt die Anzahl der Codeeinheiten in einem Feld fest.
Verwenden Sie die field(String field)-Methode zum Definieren von Feldern, in denen der Vorgang ausgeführt wird.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| void |
var functionBuilder = new GlideDBFunctionBuilder();
var myLengthFunction = functionBuilder.length();
myLengthFunction = functionBuilder.field('short_description');
myLengthFunction = functionBuilder.build();
Scoped GlideDBFunctionBuilder – multiply()
Multipliziert die Werte von zwei Ganzzahlfeldern.
Verwenden Sie die field(String field)-Methode zum Definieren von Feldern, in denen der Vorgang ausgeführt wird.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| void |
var functionBuilder = new GlideDBFunctionBuilder();
var myMultiplyFunction = functionBuilder.multiply();
myMultiplyFunction = functionBuilder.field('order');
myMultiplyFunction = functionBuilder.field('priority');
myMultiplyFunction = functionBuilder.build();
Bereichsbezogener GlideDBFunctionBuilder - orFunc(expression)
Beginnt einen neuen ODER-Ausdruck, der „wahr“ zurückgibt, wenn mindestens einer der als Parameter angegebenen Ausdrücke „wahr“ ist.
Mindestens ein Ausdruck mit einem booleschen Wert muss als Parameter angegeben werden.
| Name | Typ | Beschreibung |
|---|---|---|
| Ausdruck | GlideFunction-Ausdruck mit booleschem Wert | Derzeit erfüllen die folgenden Glide-Funktionen diese Kriterien: and(), or() und vergleichen(). |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Der resultierende GlideFunction-Ausdruck. |
Das folgende Beispiel zeigt, wie Sie einen GlideFunktionsausdruck mit der Operation or() erstellen. Der Ausdruck gibt „wahr“ zurück, wenn entweder das Feld first_name auf „John“ oder das Feld active auf „wahr“ festgelegt ist. Die resultierende Ausdruckszeichenfolge kann dann überall dort verwendet werden, wo GlideFunktionsausdrücke akzeptiert werden.
var expr = new GlideDBFunctionBuilder()
.orFunc()
.compare().field('first_name').constant('=').constant('John').endfunc()
.compare().field('active').constant('=').constant(1).endfunc()
.endfunc()
.build();
gs.info("Expression: " + expr);
Ausgabe:
Expression: glidefunction:or(compare(first_name,'=','John'),compare(active,'=','1'))
Bereichsbezogener GlideDBFunctionBuilder – position()
Gibt das erste Vorkommen einer angegebenen Zeichenfolge in einer Spalte einer Tabelle zurück.
Optional können Sie eine Position innerhalb der Zeichenfolge angeben, um die Suche zu starten. Diese Methode entspricht LOCATE(substring, streng, position) in MySQL.
Sie können diese Methode verwenden, um interessante Datenpunkte oder anwenderdefinierte Berichte von Datenanalysten zu finden. Normalerweise verwenden Sie diese Methode für Data Warehousing oder zum Extrahieren, Transformieren und Laden (ETL) von Daten in weniger flexible Systeme.
Um diese Methode in Wörterbuchdatensätzen zu verwenden, verwenden Sie glidefunction:position(<serarch_term> ,<column> ) .
| Name | Typ | Beschreibung |
|---|---|---|
| Suche ({searchTerm}) | Zeichenfolge | Text, nach dem in der angegebenen Tabellenspalte gesucht werden soll. |
| column | Zeichenfolge | Name der zu durchsuchenden Tabellenspalte. Die Tabelle wird im zugehörigen GlideRecord-Objekt angegeben. |
| start_position | Nummer | Optional. Position im Spaltentext zum Starten der Suche. Standard: 1 |
| Typ | Beschreibung |
|---|---|
| Keine | Position des ersten Vorkommens des angegebenen Suchbegriffs. Gibt 0 zurück, wenn der Suchbegriff nicht im zugehörigen Text gefunden wird. Gibt NULL zurück, wenn ein erforderliches Argument NULL ist. |
Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.
var functionBuilder = new GlideDBFunctionBuilder();
var dbFunction = functionBuilder.position();
dbFunction = functionBuilder.constant('my'); // search_term: Text to search for in the specified table column.
dbFunction = functionBuilder.field('short_description'); // column: Name of the table column to search.
dbFunction = functionBuilder.build();
gs.log(dbFunction);
var gr_incident = new GlideRecord('incident'); // Table containing the column to search
gr_incident.addFunction(dbFunction);
gr_incident.addQuery("short_description", "CONTAINS", "my");
gr_incident.setLimit(20);
gr_incident.query();
while(gr_incident.next()) {
gs.info(gr_incident.short_description + "\n position('my', short_description): " + gr_incident.getValue(dbFunction));
}
Ausgabe:
*** Script: glidefunction:position('my',short_description)
*** Script: Wireless access is down in my area
position('my', short_description): 28
*** Script: Printer in my office is out of toner
position('my', short_description): 12
*** Script: Reset my password
position('my', short_description): 7
*** Script: I can't launch my VPN client since the last software update
position('my', short_description): 16
*** Script: Missing my home directory
position('my', short_description): 9
*** Script: Seem to have an issue with my hard drive...
position('my', short_description): 28
*** Script: Please remove the latest hotfix from my PC
position('my', short_description): 38
*** Script: I can't get my weather report
position('my', short_description): 13
*** Script: Reset my password
position('my', short_description): 7
*** Script: my PDF docs are all locked from editing
position('my', short_description): 1
*** Script: My desk phone does not work
position('my', short_description): 1
*** Script: Can't log into SAP from my laptop today
position('my', short_description): 25
*** Script: My computer is not detecting the headphone device
position('my', short_description): 1
*** Script: My disk is still having issues. Can't delete a file
position('my', short_description): 1
*** Script: The USB port on my PC stopped working
position('my', short_description): 17
Bereichsbezogener GlideDBFunctionBuilder – Teilzeichenfolge ()
Gibt eine Teilzeichenfolge aus einer angegebenen Spalte einer Tabelle beginnend an einer angegebenen Stelle zurück.
Optional können Sie auch eine Stelle innerhalb der Zeichenfolge angeben, an der die Textextraktion angehalten werden soll. Diese Methode entspricht LOCATE(substring, streng, position) in MySQL.
Diese Methode funktioniert ähnlich wie JavaScript, nur auf Datenbankebene. Mit dieser Methode können Sie nach interessanten Datenpunkten oder anwenderdefinierten Berichten für Datenanalysten suchen. Normalerweise verwenden Sie diese Methode für Data Warehousing oder zum Extrahieren, Transformieren und Laden (ETL) von Daten in weniger flexible Systeme.
Um diese Methode in Wörterbuchdatensätzen zu verwenden, verwenden Sie glidefunction:substring(<field> ,<start_position> ,<end_position> )
| Name | Typ | Beschreibung |
|---|---|---|
| field | Zeichenfolge | Name der Spalte in der Tabelle, aus der der Text abgerufen werden soll. Die Tabelle wird im zugehörigen GlideRecord-Objekt angegeben. |
| start_position | Nummer | Position im Spaltentext, um mit der Textextraktion zu beginnen. |
| end_position | Nummer | Optional. Position im Spaltentext, um das Extrahieren von Text zu beenden. Standard: Ende des Texts in der angegebenen Spalte. |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Aus der angegebenen Tabellenspalte extrahierter Text. |
Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.
var functionBuilder = new GlideDBFunctionBuilder();
var dbFunction = functionBuilder.substring();
dbFunction = functionBuilder.field('short_description'); // field: Column within the table to obtain the substring
dbFunction = functionBuilder.constant(0); // start_position: Location in the column text to start extracting text
dbFunction = functionBuilder.constant(20); // end_position: Location in the column text to stop extracting text.
dbFunction = functionBuilder.build();
gs.log(dbFunction);
var gr_incident = new GlideRecord('incident'); // Table containing the column from which to extract the text
gr_incident.addFunction(dbFunction);
gr_incident.addQuery("short_description", "CONTAINS", "my");
gr_incident.setLimit(20);
gr_incident.query();
while(gr_incident.next()) {
gs.info(gr_incident.short_description + "\n substring(short_description, 0, 20): " + gr_incident.getValue(dbFunction));
}
Ausgabe:
*** Script: glidefunction:substring(short_description,'0','20')
*** Script: Wireless access is down in my area
substring(short_description, 0, 20): Wireless access is
*** Script: Printer in my office is out of toner
substring(short_description, 0, 20): Printer in my offic
*** Script: Reset my password
substring(short_description, 0, 20): Reset my password
*** Script: I can't launch my VPN client since the last software update
substring(short_description, 0, 20): I can't launch my V
*** Script: Missing my home directory
substring(short_description, 0, 20): Missing my home dir
*** Script: Seem to have an issue with my hard drive...
substring(short_description, 0, 20): Seem to have an iss
*** Script: Please remove the latest hotfix from my PC
substring(short_description, 0, 20): Please remove the l
*** Script: I can't get my weather report
substring(short_description, 0, 20): I can't get my weat
*** Script: Reset my password
substring(short_description, 0, 20): Reset my password
*** Script: my PDF docs are all locked from editing
substring(short_description, 0, 20): my PDF docs are all
*** Script: My desk phone does not work
substring(short_description, 0, 20): My desk phone does
*** Script: Can't log into SAP from my laptop today
substring(short_description, 0, 20): Can't log into SAP
*** Script: My computer is not detecting the headphone device
substring(short_description, 0, 20): My computer is not
*** Script: My disk is still having issues. Can't delete a file
substring(short_description, 0, 20): My disk is still ha
*** Script: The USB port on my PC stopped working
substring(short_description, 0, 20): The USB port on my
Scoped GlideDBFunctionBuilder – subtract()
Subtrahiert den Wert eines ganzzahligen Feldes von einem anderen.
Verwenden Sie die field(String field)-Methode zum Definieren von Feldern, in denen der Vorgang ausgeführt wird.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| void |
var functionBuilder = new GlideDBFunctionBuilder();
var mySubtractFunction = functionBuilder.subtract();
mySubtractFunction = functionBuilder.field('order');
mySubtractFunction = functionBuilder.field('priority');
mySubtractFunction = functionBuilder.build();