Comando SEEK

Pesquisa um campo de caracteres indexado para encontrar o primeiro valor correspondente à expressão de caracteres ou cadeia de caracteres especificada.

Sintaxe

SEEK expressão_de_pesquisa

Parâmetros

Nome Descrição

expressão_de_pesquisa

A expressão de caracteres que deve ser pesquisada.

Você pode usar qualquer expressão de caracteres válida, uma variável de caracteres ou uma cadeia entre aspas. expressão_de_pesquisa diferencia maiúsculas de minúsculas e pode incluir espaços à esquerda, que são tratados como caracteres.

Exemplos

Localizar o primeiro valor em um campo que corresponde a uma variável de caracteres

O campo Numero_Cartao foi definido como um campo de caracteres e é indexado em ordem crescente.

O exemplo abaixo localiza o primeiro valor no campo que corresponde exatamente ou inicia com o valor contido na variável v_num_cartão.

INDEX ON Numero_Cartao TO "NumCartao" OPEN
SET INDEX TO "NumCartao"
SEEK v_num_cartão

Localizar o primeiro valor em um campo que corresponde a uma cadeia de caracteres

O campo Numero_Cartao foi definido como um campo de caracteres e é indexado em ordem crescente.

O exemplo abaixo localiza o primeiro valor no campo que corresponde exatamente ou inicia com a literal de caracteres "AB-123":

INDEX ON Numero_Cartao TO "NumCartao" OPEN
SET INDEX TO "NumCartao"
SEEK "AB-123"

Observações

Para obter mais informações sobre o funcionamento desse comando, consulte Selecionar o primeiro registro correspondente.

Como funciona?

Utilize o comando SEEK para avançar diretamente para o primeiro registro em uma tabela contendo a search_expression especificada no campo de caracteres indexado.

  • Se expressão_de_pesquisa for encontrada, o primeiro registro correspondente na tabela será selecionado.
  • Se a expressão de pesquisa não for encontrada, será exibida a mensagem "Nenhum índice corresponde à chave" e a tabela será posicionada no primeiro registro com um valor maior que a expressão pesquisada.

    Se não há valores no campo indexado maiores que a expressão pesquisada, a tabela é posicionada no primeiro registro.

Índice requerido

Para usar SEEK para pesquisar um campo de caracteres, é preciso antes indexar o campo em ordem crescente. Se vários campos de caracteres forem classificados em ordem crescente, apenas o primeiro campo especificado no índice será pesquisado.

SEEK não pode ser usado para pesquisar campos indexados que não são de caracteres ou campos de caracteres indexados em ordem decrescente.

Correspondência parcial suportada

A correspondência parcial é permitida. A expressão de pesquisa o pode estar contida em um valor mais longo no campo indexado. Porém, a expressão pesquisada deve aparecer no início do campo para constituir uma correspondência.

O comando SEEK não é afetado pela opção Comparações exatas de caractere (SET EXACT ON/OFF).