1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

FIND x CAN-FIND

Discussão em 'Progress 4GL' iniciado por FernandaSantos, Janeiro 27, 2009.

  1. FernandaSantos

    FernandaSantos Membro Participativo

    Utilização do comando CAN-FIND


    A utilização do comando CAN-FIND retorna TRUE ou FALSE quando utilizado, isto é, existe apenas a verificação se o registro existe ou não. O registro pesquisado não fica habilitado para nenhuma operação, nem mesmo para leitura. Ao contrário do comando FIND que pode tornar o registro habilitado até mesmo para escrita.

    O principal ganho para a melhoria da performance, é que o comando CAN-FIND retorna apenas um valor lógico, enquanto o comando FIND busca todo o registro, ou apenas os campos especificados para o CLIENT, isto é, aumenta o tráfego de rede fazendo I/O e, várias vezes, desnecessariamente.

    A principal funcionalidade do comando CAN-FIND é a necessidade de saber se um registro existe ou não, como por exemplo, em um cadastro. Ao verificar se a chave informada já existe, não é necessário trazer todo o registro, somente a informação de sua existência.

    Exemplo:

    Código:
    Trocar:
    
    FIND <tabela> WHERE <tabela>.<campo-chave> = <VALOR> no-lock.
    
    IF NOT AVAILABLE <tabela> THEN DO:
    
      CREATE <tabela>.
    
      ASSIGN <tabela>.<campo-chave>.
    
    END.
    
    ASSIGN <tabela>.<demais-campos>.
    
     
    
    Por:
    
    IF NOT CAN-FIND(<tabela> WHERE <tabela>.<campo-chave> = <VALOR>) THEN
    
      CREATE <tabela>.
    
      ASSIGN <tabela>.<campo-chave>.
    
    END.
    
    ASSIGN <tabela>.<demais-campos>.
    
    Abb,

    Fernanda
  2. Will

    Will Membro Participativo

    muito bom Fernanda.

Compartilhe esta Página