Consultando tabelas no script

  • Versão de lançamento: Yokohama
  • Atualizado 30 de jan. de 2025
  • 8 min. de leitura
  • Usando métodos na API GlideRecord, você pode retornar todos os registros de uma tabela, retornar registros de uma tabela que atendem a condições específicas ou retornar registros que incluem uma cadeia de caracteres de uma única tabela ou de várias tabelas em um grupo de índice de texto.

    Consultar tabelas usando a API GlideRecord. Para obter referência de API, consulte GlideRecord - Com escopo.

    Retornar todos os registros de uma tabela

    Para consultar uma tabela, primeiro crie um objeto GlideRecord. Para criar um GlideRecord, crie o seguinte no script:
    var target = new GlideRecord('incident');

    A criação de um GlideRecord cria uma variável de destino que é um objeto GlideRecord para a tabela de incidentes.

    Para processar todos os registros da tabela de incidentes, adicione o seguinte script:
    target.query(); // Issue the query to the database to get all records 
    while (target.next()) { 
      // add code here to process the incident record 
    }

    Este script emite a consulta () para o banco de dados. Cada chamada para next() carregaria o próximo registro para processamento.

    Retornar registros de uma tabela que atendem às condições de consulta

    Na maioria das vezes, você deseja recuperar um registro específico ou um conjunto específico de registros e tem alguns critérios (condições de consulta) que definem os registros que deseja obter. Por exemplo, digamos que você queira obter todos os registros de incidentes que tenham um valor de prioridade 1. Aqui está o código que realizaria isso.
    var target = new GlideRecord('incident'); 
    target.addQuery('priority',1);
    target.query(); // Issue the query to the database to get relevant records 
    while (target.next()) { 
      // add code here to process the incident record 
    }
    Observe que o script de exemplo inclui target.addQuery('priority', 1);. Esta linha indica que você deseja somente os registros em que o campo priority é igual a 1. Em geral, a maioria das consultas a serem executadas são consultas de igualdade; consultas em que você deseja encontrar registros com um campo igual a um valor. Por esse motivo, você não precisa fornecer um operador de igualdade. No entanto, digamos que você queira encontrar todos os incidentes em que o campo priority é maior que 1. Nesse caso, você forneceria o operador que deseja aplicar à consulta.
    var target = new GlideRecord('incident') ; 
    target.addQuery('priority','>',1);
    target.query(); // Issue the query to the database to get relevant records 
    while (target.next()) { 
      // add code here to process the incident record 
    }

    Retornar registros de uma tabela que inclui uma cadeia de caracteres

    Use o nome reservado "123TEXTQUERY321" para pesquisar correspondências de cadeia de caracteres em todos os campos de uma tabela. Por exemplo, este script retorna registros da tabela Incidente com valores de campos que incluem a cadeia de caracteres "e-mail".

    var now_GR = new GlideRecord('incident');
    gr.addQuery('123TEXTQUERY321', 'email');
    gr.query();

    "123TEXTQUERY321" é uma opção reservada para o parâmetro name no método addQuery(). Você pode usar esta opção em uma cadeia de caracteres de consulta codificada. Por exemplo, em vez de gr.addQuery('123TEXTQUERY321', 'email');, você pode usar gr.addEncodedQuery('123TEXTQUERY321=email').

    A pesquisa de cadeia de caracteres não diferencia maiúsculas de minúsculas. O sistema retornará os mesmos resultados se você pesquisar e-mail, E-mailou EMAIL.

    Nota:
    Antes de poder consultar usando uma pesquisa de cadeia de caracteres, você deve configurar a indexação de texto (e, opcionalmente, atributos de pesquisa) para a tabela que deseja pesquisar. Para obter mais informações, consulte Configuração de uma única tabela para indexação e pesquisa.

    Retornar registros de várias tabelas em um grupo de índice de texto que inclui uma cadeia de caracteres

    Use o nome reservado "123TEXTINDEXGROUP321" para pesquisar uma cadeia de caracteres em uma tabela de um grupo de índice de texto. Esta opção retorna resultados com pontuações de relevância calculadas usando as configurações do grupo de índice de texto.

    Nota:
    Você só pode consultar uma tabela no grupo de índice de texto por vez. Use esta opção quando quiser emitir várias consultas de tabela única e mesclar seus resultados, ordenando-os por pontuação de relevância. A vantagem desta opção é que as pontuações de relevância do resultado da pesquisa para as consultas de tabela individuais são normalizadas de forma consistente para todas as tabelas no grupo de índice de texto.
    Por exemplo, este script retorna registros da tabela Conhecimento que incluem a palavra-chave "e-mail", com pontuações de relevância calculadas para o grupo de índice "portal".
    var now_GR = new GlideRecord('kb_knowledge');
    gr.addQuery('123TEXTQUERY321', 'email');
    gr.addQuery('123TEXTINDEXGROUP321', 'portal');
    gr.query();

    Você pode criar uma consulta semelhante para cada tabela adicional no grupo de índices do "portal" que deseja pesquisar e mesclar os resultados das consultas individuais, exibindo os resultados com as pontuações de relevância mais altas primeiro. Como todas essas consultas de pesquisa usam as mesmas configurações de pesquisa de grupo de índice de texto, as pontuações de relevância de seus resultados são todas normalizadas de forma consistente. Se você pesquisou o mesmo conjunto de tabelas sem usar o método gr.addQuery('123TEXTINDEXGROUP321', 'portal'), as pontuações de relevância das consultas individuais seriam normalizadas de forma diferente e não seriam uma base útil para classificar o conjunto de resultados mesclado.

    '123TEXTINDEXGROUP321' é uma opção reservada para o parâmetro name no método addQuery(). Você pode usar esta opção em uma cadeia de caracteres de consulta codificada. Por exemplo, em vez de gr.addQuery('123TEXTINDEXGROUP321', 'portal');, você pode usar gr.addEncodedQuery('123TEXTINDEXGROUP321=portal').

    A pesquisa de cadeia de caracteres de várias tabelas não diferencia maiúsculas de minúsculas. O sistema retornará os mesmos resultados se você pesquisar e-mail, E-mailou EMAIL.

    Nota:
    Antes de poder consultar tabelas em um grupo de índices, você deve configurar a indexação de texto e os atributos de pesquisa dessas tabelas e incluí-las no grupo de índices. Para obter mais informações, consulte Configuração de várias tabelas para indexação e pesquisa. Todas as tabelas no grupo de índice devem usar o formato de indexação V4.

    Operadores JavaScript disponíveis

    Descreve os operadores que podem ser usados em uma solicitação addQuery().

    Tabela 1. Operadores JavaScript disponíveis
    Campo Definição adicionarConsulta
    = O campo deve ser igual ao valor fornecido. addQuery('priority', '=', 1);
    > O campo deve ser maior que o valor fornecido. addQuery('priority', '>', 1);
    < O campo deve ser menor que o valor fornecido. addQuery('priority', '<', 3);
    >= O campo deve ser igual ou maior que o valor fornecido. addQuery('priority', '>=', 1);
    <= O campo deve ser igual ou menor que o valor fornecido. addQuery('priority', '<=', 3);
    != O campo não deve ser igual ao valor fornecido. addQuery('priority', '!=', 1);
    COMEÇA COM O campo deve iniciar com o valor fornecido. O exemplo mostrado à direita retorna todos os registros em que o campo short_description começa com o texto Erro. addQuery('short_description', 'STARTSWITH', 'Error');
    CONTÉM O campo deve conter o valor fornecido em algum lugar no texto. O exemplo mostrado à direita retorna todos os registros em que o campo short_description contém o texto Erro em qualquer lugar no campo.
    Nota:
    A operação LIKE não é compatível. Os administradores devem usar CONTÉM na consulta.
    addQuery('short_description', 'CONTAINS', 'Error');
    IN Usa um mapa de valores que permite vírgulas e reúne uma coleção de registros que atendem a algum outro requisito. Comporta-se como Selecionar * de <table> onde short_description IN ('Error', 'Êxito', 'Falha'), que é idêntico a Selecionar * de <table> onde short_description='Error'. Por exemplo, para consultar todos os valores de variáveis que pertencem a uma Atividade específica, use a cláusula IN e armazene seus sys_ids em um mapa ou lista separada por vírgulas. Em seguida, consulte a tabela de valores de variáveis e forneça esta lista de sys_ids. addQuery('short_description', 'IN', 'Error,Success,Failure');
    TERMINACOM O campo deve terminar com o valor fornecido. O exemplo mostrado à direita retorna todos os registros em que o campo short_description termina com o texto Erro. addQuery('short_description', 'ENDSWITH', 'Error');
    NÃO CONTÉM Seleciona registros que NÃO correspondem ao padrão no campo. Este operador não recupera campos vazios. Para valores vazios, use os operadores "está vazio" ou "não está vazio".O exemplo mostrado à direita retorna todos os registros em que o campo short_description não tem a palavra "Erro". addQuery('short_description', 'NÃO CONTÉM', 'Erro');
    NÃO EM Usa um mapa de valores que permite vírgulas e reúne uma coleção de registros que atendem a algum outro requisito. Comporta-se como: Selecione * de <table> onde short_description NOT IN ('Error'). addQuery('short_description', 'NOT IN', 'Error,Success,Failure');
    INSTÂNCIADE Operador especial que recupera somente registros de uma "classe" especificada para tabelas estendidas. O exemplo de código à direita mostra como recuperar todos os itens de configuração classificados como computadores. addQuery('sys_class_name', 'INSTANCEOF', 'cmdb_ci_computer');

    Para obter informações adicionais sobre os operadores que estão disponíveis para filtros e consultas, consulte Operators available for filters and queries.

    Existem também alguns métodos especiais que você pode usar para pesquisar dados que são NULL ou NOT NULL. Para pesquisar todos os incidentes em que o campo short_description não foi fornecido (é nulo), use a seguinte consulta:
    var target = new GlideRecord('incident'); 
    target.addNullQuery('short_description');
    target.query(); // Issue the query to the database to get all records 
    while (target.next()) { 
      // add code here to process the incident record 
    }
    Para encontrar todos os incidentes nos quais um short_description foi fornecido, use a seguinte consulta:
    var target = new GlideRecord('incident'); 
    target.addNotNullQuery('short_description');
    target.query(); // Issue the query to the database to get all records 
    while (target.next()) { 
      // add code here to process the incident record 
    }

    Para obter mais informações sobre a API GlideRecord e seus métodos disponíveis, consulte GlideRecord.

    Exemplos de consulta de GlideRecord

    Esses exemplos demonstram como executar várias consultas de GlideRecord.

    consulta

    var rec = new GlideRecord('incident');
    rec.query(); 
    while(rec.next()) { 
      gs.print(rec.number + ' exists'); }

    atualizar

    var rec = new GlideRecord('incident');
    rec.addQuery('active',true);
    rec.query(); 
    while(rec.next()) { 
      rec.active = false;
      gs.print('Active incident ' + rec.number = ' closed');
      rec.update(); }

    inserir

    var rec = new GlideRecord('incident');
    rec.initialize();
    rec.short_description = 'Network problem'; 
    rec.caller_id.setDisplayValue('Joe Employee'); 
    rec.insert();

    excluir

    var rec = new GlideRecord('incident');
    rec.addQuery('active',false);
    rec.query(); 
    while(rec.next()) { 
      gs.print('Inactive incident ' + rec.number + ' deleted');
      rec.deleteRecord(); }

    Consultando tabelas do Catálogo de serviços

    Você não pode consultar diretamente as variáveis da tabela Item da solicitação do Catálogo de serviços [sc_req_item]. Em vez disso, consulte a tabela Propriedade de variável, [sc_item_option_mtom], adicionando duas consultas, uma para o nome da variável e outra para o valor. A consulta retorna o relacionamento muitos para muitos, que você pode percorrer com pontos até o item solicitado. O exemplo a seguir encontra os itens da solicitação que têm a variável item_name com um valor de item_value e exibe os números dos itens da solicitação:
    var now_GR = new GlideRecord('sc_item_option_mtom');
    gr.addQuery('sc_item_option.item_option_new.name','item_name');
    gr.addQuery('sc_item_option.value','item_value');
    gr.query();
     
    while(gr.next()) {
      gs.addInfoMessage(gr.request_item.number); }

    Para obter informações adicionais, consulte GlideRecord.