GlideDBFunctionBuilder : dans le champ d’application, global
L’API GlideDBFunctionBuilder fournit des méthodes permettant de créer des fonctions permettant d’effectuer des opérations SQL dans la base de données.
Ces méthodes permettent de créer des fonctions de système de gestion de base de données relationnelle (SGBDR) pour effectuer des opérations SQL sur des données d’enregistrement. Vous pouvez utiliser ces méthodes dans les scripts serveur inclus dans le champ d’application et dans les scripts serveur global.
- Construisez une fonction à l’aide du constructeur GlideDBFunctionBuilder et des méthodes associées.
- Après avoir généré une fonction, vous l’appliquez à l’enregistrement actuel à l’aide de la méthode addFunction() de la classe GlideRecord .
- Ajoutez la fonction à une requête à l’aide de la méthode addQuery() de la classe GlideRecord .
- Récupérez les résultats de la fonction à l’aide des méthodes d’API GlideRecord existantes telles que getValue() et getElement().
Par exemple :
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));
}
Pour plus d’informations sur les champs de fonction, reportez-vous à la section Function field.
GlideDBFunctionBuilder inclus dans le champ d’application : GlideDBFunctionBuilder()
Instancie un objet GlideDBFunctionBuilder.
| Nom | Type | Description |
|---|---|---|
| Néant |
var builder = new GlideDBFunctionBuilder();
GlideDBFunctionBuilder inclus dans le champ d’application : andFunc(expr1, expr2, ...)
Commence une nouvelle expression AND, qui renvoie la valeur true uniquement si toutes les expressions qui lui sont fournies en tant que paramètres sont vraies. Au moins une expression à valeur booléenne doit être fournie en tant que paramètre.
| Nom | Type | Description |
|---|---|---|
| expression | Expression booléenne GlideFunction | À l’heure actuelle, les fonctions Glide qui répondent à ce critère incluent and(),or() et compare(). |
| Type | Description |
|---|---|
| Chaîne | Expression GlideFunction résultante. |
L’exemple suivant montre comment définir et construire un énoncé de ticket simple.
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);
Sortie :
Expression: glidefunction:and(compare(first_name,'=','John'),compare(active,'=','1'))
GlideDBFunctionBuilder inclus dans le champ d’application : add()
Ajoute les valeurs de deux champs entiers ou plus.
Utilisez la méthode field(String field) pour définir les champs sur lesquels l’opération est effectuée.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| nul |
var functionBuilder = new GlideDBFunctionBuilder();
var myAddingFunction = functionBuilder.add();
myAddingFunction = functionBuilder.field('order');
myAddingFunction = functionBuilder.field('priority');
myAddingFunction = functionBuilder.build();
GlideDBFunctionBuilder inclus dans le champ d’application : build()
Génère la fonction de base de données définie par l’objet GlideDBFunctionBuilder.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| nul |
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)GlideDBFunctionBuilder inclus dans le champ d’application : coalesce()
Utilise un nombre quelconque de champs séparés par des virgules comme entrée et renvoie la première valeur non vide.
| Nom | Type | Description |
|---|---|---|
| argument | Chaîne | Liste contenant une valeur constante (chaînes, objets, booléens) ou un champ. Format accepté : glidefunction :coalesce(<string, string, string, etc.>). Un argument peut avoir n’importe quel nombre de paramètres, mais doit avoir au moins un paramètre défini. |
| Type | Description |
|---|---|
| Chaîne | Première valeur de la liste d’arguments qui n’est pas nulle. Si aucune valeur n’est non nulle, null est renvoyée. Si aucun argument n’est fourni lors de la création de l’objet function, la « fonction non valide » est renvoyée sous forme de chaîne. |
L’exemple de demande suivant montre comment former la fonction de guide de coalescence pour renvoyer des valeurs null en fonction des champs closed_at, resolved_at et sys_updated_on.
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));
Le script renvoie la première valeur non nulle d’un champ de cette liste : [closed_at, resolved_at, sys_updated_on] pour chaque enregistrement d’incident dans la table d’incident et les génère avec gs.info.
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
GlideDBFunctionBuilder inclus dans le champ d’application : compare(exp1, op, exp2)
Commence une nouvelle expression COMPARE qui effectue une comparaison entre deux expressions.
| Nom | Type | Description |
|---|---|---|
| exp1 | Chaîne | Expression de comparaison à gauche. Peut être une constante, une référence à un champ ou une autre fonction Glide. |
| Op | Chaîne | Un opérateur de comparaison, entouré de guillemets. Valeurs acceptées :
|
| exp2 | Chaîne | Expression de comparaison droite. Peut être une constante, une référence à un champ ou une autre fonction Glide. |
| Type | Description |
|---|---|
| Chaîne | Expression GlideFunction résultante. |
L’exemple suivant montre comment créer une expression glidefunction à l’aide de l’opération compare(). Après avoir appelé compare(), trois appels supplémentaires doivent être effectués pour spécifier chacun des trois paramètres requis, ce qui est ensuite complété par un seul appel à endfun(). Ci-dessous, nous créons deux expressions compare() distinctes et les fournissons comme paramètres de l’expression or( ).
var expr = new GlideDBFunctionBuilder()
.orFunc()
.compare().field('first_name').constant('=').constant('John').endfunc()
.compare().field('active').constant('=').constant(1).endfunc()
.endfunc()
.build();
Sortie :
Expression: glidefunction:or(compare(first_name,'=','John'),compare(active,'=','1'))
GlideDBFunctionBuilder inclus dans le champ d’application : concat()
Concatène les valeurs de deux champs ou plus.
Utilisez la méthode field(String field) pour définir les champs sur lesquels l’opération est effectuée.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| nul |
var functionBuilder = new GlideDBFunctionBuilder();
var myConcatFunction = functionBuilder.concat();
myConcatFunction = functionBuilder.field('short_description');
myConcatFunction = functionBuilder.field('caller_id.name');
myConcatFunction = functionBuilder.build();
GlideDBFunctionBuilder dans le champ d’application : constant(constante de chaîne)
Définit une valeur constante à utiliser dans la fonction. Si elle est utilisée avec la méthode dayofweek(), la chaîne définit s’il faut utiliser le dimanche ou le lundi comme premier jour de la semaine.
| Nom | Type | Description |
|---|---|---|
| constante | Chaîne | Valeur constante utilisée dans une fonction. Lorsqu’elle est utilisée avec la méthode dayofweek(), la valeur définit si la semaine commence un dimanche ou un lundi.
Cette définition permet à la méthode dayofweek() de renvoyer le jour correct de la semaine à partir d’une date donnée. Si une valeur autre que 1 ou 2 est fournie, la méthode dayofweek() utilise le dimanche comme premier jour de la semaine. |
| Type | Description |
|---|---|
| nul |
L’exemple de code suivant montre comment appeler cette méthode.
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));
}
GlideDBFunctionBuilder inclus dans le champ d’application : datediff()
Détermine la durée à l’aide d’une date/heure de début et d’une date/heure de fin.
Utilisez la méthode field(String field) pour définir les champs de date/heure de début et de fin.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| nul |
var functionBuilder = new GlideDBFunctionBuilder();
var myDateDiffFunction = functionBuilder.datediff();
myDateDiffFunction = functionBuilder.field('sys_updated_on');
myDateDiffFunction = functionBuilder.field('opened_at');
myDateDiffFunction = functionBuilder.build();
GlideDBFunctionBuilder inclus dans le champ d’application : dayofweek()
Renvoie un nombre entier représentant le jour de la semaine pour une date donnée.
Utilisez la méthode field(String field) pour définir la date/heure donnée. Utilisez la méthode constant(String constant) pour définir si la semaine commence un dimanche ou un lundi.
Cette méthode ne peut être utilisée qu’avec les bases de données MySQL, Oracle et Microsoft SQL Server. Si vous utilisez une base de données Oracle, le paramètre de NLS_TERRITORY doit être défini sur un territoire dont le dimanche est le premier jour de la semaine.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Entier | Si le premier jour de la semaine est défini sur le dimanche dans la méthode constant(String constant), les valeurs renvoyées sont associées aux jours suivants de la semaine :
Si le premier jour de la semaine est défini sur le lundi :
Si une valeur autre que 1 ou 2 est fournie dans la méthode constant(String constant), la méthode dayofweek() utilise le dimanche comme premier jour de la semaine. |
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));
GlideDBFunctionBuilder inclus dans le champ d’application : divide()
Divise la valeur d’un champ entier par un autre.
Utilisez la méthode field(String field) pour définir les champs sur lesquels l’opération est effectuée.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| nul |
var functionBuilder = new GlideDBFunctionBuilder();
var myDivideFunction = functionBuilder.divide();
myDivideFunction = functionBuilder.field('order');
myDivideFunction = functionBuilder.field('priority');
myDivideFunction = functionBuilder.build();
GlideDBFunctionBuilder inclus dans le champ d’application : field(champ de chaîne)
Définit un champ sur lequel une opération SQL est effectuée.
| Nom | Type | Description |
|---|---|---|
| champ | Chaîne | Champ sur lequel vous effectuez l’opération SQL. |
| Type | Description |
|---|---|
| nul |
var functionBuilder = new GlideDBFunctionBuilder();
var myAddingFunction = functionBuilder.add();
myAddingFunction = functionBuilder.field('order');
myAddingFunction = functionBuilder.field('priority');
myAddingFunction = functionBuilder.build();
GlideDBFunctionBuilder inclus dans le champ d’application : length()
Détermine le nombre d’unités de code dans un champ.
Utilisez la méthode field(String field) pour définir les champs sur lesquels l’opération est effectuée.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| nul |
var functionBuilder = new GlideDBFunctionBuilder();
var myLengthFunction = functionBuilder.length();
myLengthFunction = functionBuilder.field('short_description');
myLengthFunction = functionBuilder.build();
GlideDBFunctionBuilder inclus dans le champ d’application : multiply()
Multiplie les valeurs de deux champs de nombres entiers.
Utilisez la méthode field(String field) pour définir les champs sur lesquels l’opération est effectuée.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| nul |
var functionBuilder = new GlideDBFunctionBuilder();
var myMultiplyFunction = functionBuilder.multiply();
myMultiplyFunction = functionBuilder.field('order');
myMultiplyFunction = functionBuilder.field('priority');
myMultiplyFunction = functionBuilder.build();
GlideDBFunctionBuilder inclus dans le champ d’application : ouFunc(expression)
Commence une nouvelle expression OU qui renvoie la valeur true si au moins une des expressions qui lui sont fournies en tant que paramètre est vraie.
Au moins une expression à valeur booléenne doit être fournie en tant que paramètre.
| Nom | Type | Description |
|---|---|---|
| expression | Expression booléenne GlideFunction | À l’heure actuelle, les fonctions Glide qui répondent à ce critère incluent and(), or() et compare(). |
| Type | Description |
|---|---|
| Chaîne | Expression GlideFunction résultante. |
L’exemple suivant montre comment créer une expression glidefunction à l’aide de l’opération or(). L’expression renvoie la valeur vrai si le first_name champ est « John » ou si le active champ est vrai. La chaîne d’expression résultante peut ensuite être utilisée partout où des expressions glidefunction sont acceptées.
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);
Sortie :
Expression: glidefunction:or(compare(first_name,'=','John'),compare(active,'=','1'))
GlideDBFunctionBuilder inclus dans le champ d’application : position()
Renvoie la première occurrence d’une chaîne spécifiée dans une colonne d’une table.
Vous pouvez éventuellement spécifier un emplacement dans la chaîne pour démarrer la recherche. Cette méthode équivaut à LOCATE(substring, str, position) dans MySQL.
Vous pouvez utiliser cette méthode pour trouver des points de données intéressants ou des rapports personnalisés par des analystes de données. En règle générale, vous utiliserez cette méthode pour l’entreposage de données ou pour extraire, transformer et charger des données (ETL) dans des systèmes moins flexibles.
Pour utiliser cette méthode dans les enregistrements de dictionnaire, utilisez glidefunction :position(<serarch_term>,<column>).
| Nom | Type | Description |
|---|---|---|
| search_term | Chaîne | Texte à rechercher dans la colonne de table spécifiée. |
| colonne | Chaîne | Nom de la colonne de table à rechercher. La table est spécifiée dans l’objet GlideRecord associé. |
| start_position | Numéro | Facultatif. Emplacement dans le texte de la colonne pour démarrer la recherche. Valeur par défaut : 1 |
| Type | Description |
|---|---|
| Néant | Position de la première occurrence du terme de recherche spécifié. Renvoie 0 si le terme de recherche est introuvable dans le texte associé. Renvoie NULL si un argument requis est NULL. |
L’exemple de code suivant montre comment appeler cette méthode.
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));
}
Sortie :
*** 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
GlideDBFunctionBuilder inclus dans le champ d’application : sous-chaîne()
Renvoie une sous-chaîne à partir d’une colonne spécifiée d’une table commençant à un emplacement spécifié.
En option, vous pouvez également spécifier un emplacement dans la chaîne où arrêter l’extraction de texte. Cette méthode équivaut à LOCATE(substring, str, position) dans MySQL.
Cette méthode fonctionne de la même manière que celle de JavaScript, mais au niveau de la base de données. Vous pouvez utiliser cette méthode pour trouver des points de données intéressants ou des rapports personnalisés pour les analystes de données. En règle générale, vous utiliserez cette méthode pour l’entreposage de données ou pour extraire, transformer et charger des données (ETL) dans des systèmes moins flexibles.
Pour utiliser cette méthode dans les enregistrements de dictionnaire, utilisez glidefunction :substring(<field>,<start_position>,<end_position>)
| Nom | Type | Description |
|---|---|---|
| champ | Chaîne | Nom de la colonne de la table à partir de laquelle obtenir le texte. La table est spécifiée dans l’objet GlideRecord associé. |
| start_position | Numéro | Emplacement dans le texte de la colonne pour commencer l’extraction du texte. |
| end_position | Numéro | Facultatif. Emplacement dans le texte de la colonne pour arrêter l’extraction du texte. Par défaut : fin du texte dans la colonne spécifiée. |
| Type | Description |
|---|---|
| Chaîne | Texte extrait de la colonne de table spécifiée. |
L’exemple de code suivant montre comment appeler cette méthode.
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));
}
Sortie :
*** 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
GlideDBFunctionBuilder inclus dans le champ d’application : subtract()
Soustrait la valeur d’un champ entier d’un autre.
Utilisez la méthode field(String field) pour définir les champs sur lesquels l’opération est effectuée.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| nul |
var functionBuilder = new GlideDBFunctionBuilder();
var mySubtractFunction = functionBuilder.subtract();
mySubtractFunction = functionBuilder.field('order');
mySubtractFunction = functionBuilder.field('priority');
mySubtractFunction = functionBuilder.build();