GlideDBFunctionBuilder - com escopo, global
A API GlideDBFunctionBuilder fornece métodos para criar funções para executar operações SQL no banco de dados.
Esses métodos fornecem uma maneira de criar funções do Sistema de gestão de banco de dados relacional (RDBMS) para executar operações SQL em dados de registro. Você pode usar esses métodos em scripts de servidor com escopo e globais.
- Construa uma função usando o construtor GlideDBFunctionBuilder e os métodos associados.
- Depois de criar uma função, você aplica a função ao registro atual usando o método addFunction() da classe GlideRecord.
- Adicione a função a uma consulta usando o método addQuery() da classe GlideRecord.
- Recupere os resultados da função usando os métodos de API GlideRecord existentes, como getValue() e getElement().
Por exemplo:
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));
}
Para obter informações adicionais sobre campos de função, consulte Function field.
GlideDBFunctionBuilder com escopo - GlideDBFunctionBuilder()
Instancia um objeto GlideDBFunctionBuilder.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
var builder = new GlideDBFunctionBuilder();
GlideDBFunctionBuilder com escopo - andFunc(expr1, expr2, …)
Inicia uma nova expressão AND, que retorna verdadeiro somente se todas as expressões fornecidas como parâmetros forem verdadeiras. Pelo menos uma expressão de valor booliano deve ser fornecida como um parâmetro.
| Nome | Tipo | Descrição |
|---|---|---|
| expressão | Expressão de GlideFunction com valor booliano | No momento, as funções glide que atendem a esses critérios incluem and(), or()e compare(). |
| Tipo | Descrição |
|---|---|
| Cadeia de caracteres | A expressão GlideFunction resultante. |
O exemplo a seguir mostra como definir e criar uma declaração de caso simples.
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);
Saída:
Expression: glidefunction:and(compare(first_name,'=','John'),compare(active,'=','1'))
GlideDBFunctionBuilder com escopo - add()
Adiciona os valores de dois ou mais campos inteiros.
Use o método field(String field) para definir os campos nos quais a operação é realizada.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| vazio |
var functionBuilder = new GlideDBFunctionBuilder();
var myAddingFunction = functionBuilder.add();
myAddingFunction = functionBuilder.field('order');
myAddingFunction = functionBuilder.field('priority');
myAddingFunction = functionBuilder.build();
GlideDBFunctionBuilder com escopo - build()
Cria a função de banco de dados definida pelo objeto GlideDBFunctionBuilder.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| vazio |
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 com escopo - aglutinar ()
Usa qualquer número de campos separados por vírgula como entrada e retorna o primeiro valor não vazio.
| Nome | Tipo | Descrição |
|---|---|---|
| argumento | Cadeia de caracteres | Uma lista que contém um valor constante (cadeias de caracteres, objetos, boolianos) ou um campo. Formato aceito: glidefunction:coalesce(<string, string, string, etc.> ) . Um argumento pode ter qualquer número de parâmetros, mas deve ter pelo menos um parâmetro definido. |
| Tipo | Descrição |
|---|---|
| Cadeia de caracteres | O primeiro valor na lista de argumentos que não é nulo. Se nenhum valor for não nulo, será retornado nulo. Se nenhum argumento for fornecido na criação do objeto de função, "função inválida" será retornado como uma cadeia de caracteres. |
A solicitação de exemplo a seguir demonstra como formar a função de guia de aglutinação para retornar valores nulos de acordo com os campos closed_at, resolved_at e 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));
O script retorna o primeiro valor não nulo de um campo desta lista: [closed_at, resolved_at, sys_updated_on] para cada registro de incidente na tabela de incidentes e os gera com 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 com escopo - compare(exp1, op, exp2)
Inicia uma nova expressão COMPARE que executa uma comparação entre duas expressões.
| Nome | Tipo | Descrição |
|---|---|---|
| exp1 | Cadeia de caracteres | Expressão de comparação à esquerda. Pode ser uma constante, referência a um campo ou outra função do Glide. |
| op | Cadeia de caracteres | Um operador de comparação entre aspas. Valores aceitos:
|
| exp2 | Cadeia de caracteres | Expressão de comparação à direita. Pode ser uma constante, referência a um campo ou outra função do Glide. |
| Tipo | Descrição |
|---|---|
| Cadeia de caracteres | A expressão GlideFunction resultante. |
O exemplo a seguir mostra como criar uma expressão glidefunction usando a operação compare(). Depois de chamar compare(), três chamadas adicionais devem ser feitas para especificar cada um dos três parâmetros necessários, que são concluídos por uma única chamada para endfun(). Abaixo, criamos duas expressões compare() separadas e as fornecemos como parâmetros para a expressão or().
var expr = new GlideDBFunctionBuilder()
.orFunc()
.compare().field('first_name').constant('=').constant('John').endfunc()
.compare().field('active').constant('=').constant(1).endfunc()
.endfunc()
.build();
Saída:
Expression: glidefunction:or(compare(first_name,'=','John'),compare(active,'=','1'))
GlideDBFunctionBuilder com escopo - concat()
Concatena os valores de dois ou mais campos.
Use o método field(String field) para definir os campos nos quais a operação é realizada.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| vazio |
var functionBuilder = new GlideDBFunctionBuilder();
var myConcatFunction = functionBuilder.concat();
myConcatFunction = functionBuilder.field('short_description');
myConcatFunction = functionBuilder.field('caller_id.name');
myConcatFunction = functionBuilder.build();
GlideDBFunctionBuilder com escopo - constante (cadeia de caracteres constante)
Define um valor constante a ser usado na função. Se usada com o método dayofweek(), a cadeia de caracteres definirá se domingo ou segunda-feira será usado como o primeiro dia da semana.
| Nome | Tipo | Descrição |
|---|---|---|
| constante | Cadeia de caracteres | Um valor constante usado em uma função. Quando usado com o método dayofweek(), o valor define se a semana começa em um domingo ou segunda-feira.
Esta definição permite que o método dayofweek() retorne o dia correto da semana a partir de uma determinada data. Se um valor diferente de 1 ou 2 for fornecido, o método dayofweek() usará o domingo como o primeiro dia da semana. |
| Tipo | Descrição |
|---|---|
| vazio |
O exemplo de código a seguir mostra como chamar este método.
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 com escopo - datediff()
Determina a duração usando uma determinada data/hora de início e data/hora de término.
Use o método field(String field) para definir campos de data/hora de início e de término.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| vazio |
var functionBuilder = new GlideDBFunctionBuilder();
var myDateDiffFunction = functionBuilder.datediff();
myDateDiffFunction = functionBuilder.field('sys_updated_on');
myDateDiffFunction = functionBuilder.field('opened_at');
myDateDiffFunction = functionBuilder.build();
GlideDBFunctionBuilder com escopo - dayofweek()
Retorna um número inteiro que representa o dia da semana para uma determinada data.
Use o método field(String field) para definir a data/hora fornecidas. Use o método constante (cadeia de caracteres constante) para definir se a semana começa em um domingo ou segunda-feira.
Este método pode ser usado somente com bancos de dados MySQL, Oracle e Microsoft SQL Server. Se estiver usando um banco de dados Oracle, a configuração NLS_TERRITORY deverá ser definida para um território com domingo como o primeiro dia da semana.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| Inteiro | Se o primeiro dia da semana estiver definido como domingo no método constante (cadeia de caracteres constante), os valores de retorno serão associados aos seguintes dias da semana:
Se o primeiro dia da semana estiver definido como segunda-feira:
Se um valor diferente de 1 ou 2 for fornecido no método constante (cadeia de caracteres constante), o método dayofweek() usará o domingo como o primeiro dia da semana. |
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 com escopo - divide()
Divide o valor de um campo inteiro por outro.
Use o método field(String field) para definir os campos nos quais a operação é realizada.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| vazio |
var functionBuilder = new GlideDBFunctionBuilder();
var myDivideFunction = functionBuilder.divide();
myDivideFunction = functionBuilder.field('order');
myDivideFunction = functionBuilder.field('priority');
myDivideFunction = functionBuilder.build();
GlideDBFunctionBuilder com escopo - field(campo de cadeia de caracteres)
Define um campo no qual uma operação SQL é executada.
| Nome | Tipo | Descrição |
|---|---|---|
| Assunto: | Cadeia de caracteres | O campo no qual você está executando a operação SQL. |
| Tipo | Descrição |
|---|---|
| vazio |
var functionBuilder = new GlideDBFunctionBuilder();
var myAddingFunction = functionBuilder.add();
myAddingFunction = functionBuilder.field('order');
myAddingFunction = functionBuilder.field('priority');
myAddingFunction = functionBuilder.build();
GlideDBFunctionBuilder com escopo - comprimento ()
Determina o número de unidades de código em um campo.
Use o método field(String field) para definir os campos nos quais a operação é realizada.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| vazio |
var functionBuilder = new GlideDBFunctionBuilder();
var myLengthFunction = functionBuilder.length();
myLengthFunction = functionBuilder.field('short_description');
myLengthFunction = functionBuilder.build();
GlideDBFunctionBuilder com escopo - multiplicar ()
Multiplica os valores de dois campos inteiros.
Use o método field(String field) para definir os campos nos quais a operação é realizada.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| vazio |
var functionBuilder = new GlideDBFunctionBuilder();
var myMultiplyFunction = functionBuilder.multiply();
myMultiplyFunction = functionBuilder.field('order');
myMultiplyFunction = functionBuilder.field('priority');
myMultiplyFunction = functionBuilder.build();
GlideDBFunctionBuilder com escopo - orFunc(expression)
Inicia uma nova expressão OR que retorna verdadeiro se pelo menos uma das expressões fornecidas como um parâmetro for verdadeira.
Pelo menos uma expressão de valor booliano deve ser fornecida como um parâmetro.
| Nome | Tipo | Descrição |
|---|---|---|
| expressão | Expressão de GlideFunction com valor booliano | No momento, as funções do glide que atendem a esses critérios incluem and(), or() e compare(). |
| Tipo | Descrição |
|---|---|
| Cadeia de caracteres | A expressão GlideFunction resultante. |
O exemplo a seguir mostra como criar uma expressão glidefunction usando a operação or(). A expressão retornará verdadeiro se o campo first_name for 'John" ou o campo active for verdadeiro. A cadeia de caracteres de expressão resultante pode ser usada sempre que expressões glidefunction forem aceitas.
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);
Saída:
Expression: glidefunction:or(compare(first_name,'=','John'),compare(active,'=','1'))
GlideDBFunctionBuilder com escopo - posição ()
Retorna a primeira ocorrência de uma cadeia de caracteres especificada em uma coluna de uma tabela.
Opcionalmente, você pode especificar um local na cadeia de caracteres para iniciar a pesquisa. Este método é igual ao LOCATE (subcadeia de caracteres, str, posição) no MySQL.
Você pode usar este método para encontrar pontos de dados interessantes ou relatórios personalizados por analistas de dados. Normalmente, você usará este método para armazenamento de dados ou para extrair, transformar e carregar dados (ETL) em sistemas menos flexíveis.
Para usar este método em registros de Dicionário, use glidefunction:position(<serarch_term> ,<column> ) .
| Nome | Tipo | Descrição |
|---|---|---|
| search_term | Cadeia de caracteres | Texto a ser pesquisado na coluna da tabela especificada. |
| coluna | Cadeia de caracteres | Nome da coluna da tabela a ser pesquisada. A tabela é especificada no objeto GlideRecord associado. |
| posição_início | Número | Opcional. Local no texto da coluna para iniciar a pesquisa. Padrão: 1 |
| Tipo | Descrição |
|---|---|
| Nenhum(a) | Posição da primeira ocorrência do termo de pesquisa especificado. Retorna 0 se o termo de pesquisa não for encontrado no texto associado. Retorna NULO se algum argumento necessário for NULO. |
O exemplo de código a seguir mostra como chamar este método.
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));
}
Saída:
*** 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 com escopo - substring()
Retorna uma subcadeia de caracteres de uma coluna especificada de uma tabela que começa em um local especificado.
Opcionalmente, você também pode especificar um local na cadeia de caracteres em que parar a extração de texto. Este método é igual ao LOCATE (subcadeia de caracteres, str, posição) no MySQL.
Este método funciona de forma semelhante ao do JavaScript, apenas no nível do banco de dados. Você pode usar este método para encontrar pontos de dados interessantes ou relatórios personalizados para analistas de dados. Normalmente, você usará este método para armazenamento de dados ou para extrair, transformar e carregar dados (ETL) em sistemas menos flexíveis.
Para usar este método em registros de Dicionário, use glidefunction:substring(<field> ,<start_position> ,<end_position> )
| Nome | Tipo | Descrição |
|---|---|---|
| Assunto: | Cadeia de caracteres | Nome da coluna na tabela da qual o texto será obtido. A tabela é especificada no objeto GlideRecord associado. |
| posição_início | Número | Local no texto da coluna para iniciar a extração de texto. |
| end_position | Número | Opcional. Local no texto da coluna para interromper a extração de texto. Padrão: fim do texto na coluna especificada. |
| Tipo | Descrição |
|---|---|
| Cadeia de caracteres | Texto extraído da coluna da tabela especificada. |
O exemplo de código a seguir mostra como chamar este método.
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));
}
Saída:
*** 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 com escopo - subtract()
Subtrai o valor de um campo inteiro de outro.
Use o método field(String field) para definir os campos nos quais a operação é realizada.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| vazio |
var functionBuilder = new GlideDBFunctionBuilder();
var mySubtractFunction = functionBuilder.subtract();
mySubtractFunction = functionBuilder.field('order');
mySubtractFunction = functionBuilder.field('priority');
mySubtractFunction = functionBuilder.build();