GlideDBFunctionBuilder : dans le champ d’application, global

  • Rversion finale: Yokohama
  • Mis à jour 30 janv. 2025
  • 14 minutes de lecture
  • 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.

    Pour utiliser les fonctions de la plateforme :
    • 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.

    Tableau 1. Paramètres
    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.

    Tableau 2. Paramètres
    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().
    Tableau 3. Renvoie
    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.

    Tableau 4. Paramètres
    Nom Type Description
    Aucun
    Tableau 5. Renvoie
    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.

    Tableau 6. Paramètres
    Nom Type Description
    Aucun
    Tableau 7. Renvoie
    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);
    Sortie :
    *** 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.

    Tableau 8. Paramètres
    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.
    Tableau 9. Renvoie
    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.

    Tableau 10. Paramètres
    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.
    Tableau 11. Renvoie
    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.

    Tableau 12. Paramètres
    Nom Type Description
    Aucun
    Tableau 13. Renvoie
    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.

    Tableau 14. Paramètres
    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.

    • 1 : La semaine commence le dimanche.
    • 2 : La semaine commence le 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.

    Tableau 15. Renvoie
    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.

    Tableau 16. Paramètres
    Nom Type Description
    Aucun
    Tableau 17. Renvoie
    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.

    Tableau 18. Paramètres
    Nom Type Description
    Aucun
    Tableau 19. Renvoie
    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 :

    • 1 : Dimanche
    • 2 : Lundi
    • 3 : Mardi
    • 4 : Mercredi
    • 5 : Jeudi
    • 6 : Vendredi
    • 7 : Samedi

    Si le premier jour de la semaine est défini sur le lundi :

    • 1 : Lundi
    • 2 : Mardi
    • 3 : Mercredi
    • 4 : Jeudi
    • 5 : Vendredi
    • 6 : Samedi
    • 7 : Dimanche

    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.

    Tableau 20. Paramètres
    Nom Type Description
    Aucun
    Tableau 21. Renvoie
    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.

    Tableau 22. Paramètres
    Nom Type Description
    champ Chaîne Champ sur lequel vous effectuez l’opération SQL.
    Tableau 23. Renvoie
    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.

    Tableau 24. Paramètres
    Nom Type Description
    Aucun
    Tableau 25. Renvoie
    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.

    Tableau 26. Paramètres
    Nom Type Description
    Aucun
    Tableau 27. Renvoie
    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.

    Tableau 28. Paramètres
    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().
    Tableau 29. Renvoie
    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>).

    Remarque :
    Les paramètres spécifiés dans la table suivante ne sont pas transmis avec l’appel de méthode, mais sont définis dans l’objet GlideDBFunctionBuilder().
    Tableau 30. Paramètres
    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

    Tableau 31. Renvoie
    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>)

    Remarque :
    Les paramètres spécifiés dans la table suivante ne sont pas transmis avec l’appel de méthode, mais sont définis dans l’objet GlideDBFunctionBuilder().
    Tableau 32. Paramètres
    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.

    Tableau 33. Renvoie
    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.

    Tableau 34. Paramètres
    Nom Type Description
    Aucun
    Tableau 35. Renvoie
    Type Description
    nul
    var functionBuilder = new GlideDBFunctionBuilder();
    var mySubtractFunction = functionBuilder.subtract();
    mySubtractFunction = functionBuilder.field('order');
    mySubtractFunction = functionBuilder.field('priority');
    mySubtractFunction = functionBuilder.build();