Consultando tabelas no script
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
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.
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
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
}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.
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.
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.
Operadores JavaScript disponíveis
Descreve os operadores que podem ser usados em uma solicitação addQuery().
| 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.
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
}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
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.