GlideDBFunctionBuilder – Scoped, Global
Die GlideDBFunctionBuilder- API stellt Methoden zum Erstellen von Funktionen zum Ausführen von SQL-Vorgängen in der Datenbank bereit.
Die GlideDBFunctionBuilder- 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();
Scoped GlideDBFunctionBuilder – andFunc(expr1, expr2, …)
Beginnt einen neuen AND-Ausdruck, der nur dann „true“ zurückgibt, wenn alle ihm als Parameter übergebenen Ausdrücke „true“ sind. Mindestens ein Ausdruck mit boolean Wert muss als Parameter angegeben werden.
| Name | Typ | Beschreibung |
|---|---|---|
| Ausdruck | GlideFunction-Ausdruck mit boolean Wert | Zu den Glide-Funktionen, die diese Kriterien erfüllen, gehören derzeit and(), or()und compare(). |
| 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)Scoped GlideDBFunctionBuilder – mergel()
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, es muss jedoch mindestens ein Parameter definiert sein. |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Der erste Wert in der Argumentliste, der nicht NULL ist. Wenn keine Werte nicht 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 Koaleszenzleitfadenfunktion so gebildet wird, dass NULL-Werte gemäß den Feldern closed_at, resolve_at und sys_updated_on 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 aus der folgenden Liste zurück: [closed_at, resolve_at, sys_updated_on] und gibt sie 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
Scoped GlideDBFunctionBuilder – compare(exp1, op, exp2)
Beginnt einen neuen COMPARE-Ausdruck, der einen Vergleich zwischen zwei Ausdrücken durchführt.
| Name | Typ | Beschreibung |
|---|---|---|
| exp1 | Zeichenfolge | Linker Vergleichsausdruck. Kann eine Konstante, ein Verweis auf ein Feld oder eine andere Glide-Funktion sein. |
| op | Zeichenfolge | Ein Vergleichsoperator, eingeschlossen in Anführungszeichen. 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 ein Glidefunction-Ausdruck mit dem Vorgang „compare()“ erstellt wird. Nach dem Aufruf von compare()müssen drei weitere Aufrufe durchgeführt werden, um jeden der drei erforderlichen Parameter anzugeben, was dann durch einen einzelnen Aufruf von endfun()abgeschlossen wird. Im Folgenden erstellen wir zwei separate compare()- Ausdrücke und geben sie als Parameter für den or()- Ausdruck an.
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();
Scoped GlideDBFunctionBuilder – orFunc(expression)
Beginnt einen neuen OR-Ausdruck, der „true“ zurückgibt, wenn mindestens einer der als Parameter angegebenen Ausdrücke „true“ ist.
Mindestens ein Ausdruck mit boolean Wert muss als Parameter angegeben werden.
| Name | Typ | Beschreibung |
|---|---|---|
| Ausdruck | GlideFunction-Ausdruck mit boolean Wert | Zu den Glide-Funktionen, die diese Kriterien erfüllen, gehören derzeit und (), oder () und vergleichen (). |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Der resultierende GlideFunction-Ausdruck. |
Das folgende Beispiel zeigt, wie ein Glidefunction-Ausdruck mit der Operation or() erstellt wird. Der Ausdruck gibt „true“ zurück, wenn entweder das Feld first_name „John“ oder das Feld active „true“ ist. Die resultierende Ausdruckszeichenfolge kann dann überall dort verwendet werden, wo glidefunction-Ausdrü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'))
Scoped 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, str, position) in MySQL.
Sie können diese Methode verwenden, um interessante Datenpunkte oder benutzerdefinierte 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 zugeordneten GlideRecord-Objekt angegeben. |
| start_position | Nummer | Optional. Position im Spaltentext, an der die Suche gestartet werden soll. Standard: 1 |
| Typ | Beschreibung |
|---|---|
| Keine | Position des ersten Vorkommens des angegebenen Suchbegriffs. Gibt 0 zurück, wenn der Suchbegriff nicht im zugeordneten 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
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();
Scoped GlideDBFunctionBuilder – substring()
Gibt eine Teilzeichenfolge aus einer angegebenen Spalte einer Tabelle zurück, die an einer angegebenen Position beginnt.
Optional können Sie auch eine Stelle innerhalb der Zeichenfolge angeben, an der die Textextraktion angehalten werden soll. Diese Methode entspricht LOCATE(substring, str, position) in MySQL.
Diese Methode funktioniert ähnlich wie JavaScript, nur auf Datenbankebene. Sie können diese Methode verwenden, um interessante Datenpunkte oder benutzerdefinierte Berichte für 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: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 zugeordneten GlideRecord-Objekt angegeben. |
| start_position | Nummer | Position im Spaltentext, an der mit der Textextraktion begonnen werden soll. |
| end_position | Nummer | Optional. Position im Spaltentext, an der das Extrahieren von Text angehalten werden soll. Standard: Ende des Texts in der angegebenen Spalte. |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Text, der aus der angegebenen Tabellenspalte extrahiert wurde. |
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