Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Comentário: Atualizar documentação - Função ainda não disponivel para RPODB=SQLITE

...

Bloco de código
collapsefalse
TCGenQry2( < xPar1 >, < xPar2 >, < cQuery >, < aValues > )

Parâmetros

Nome

Tipo

Descrição

Obrigatório

Referência

xPar1

nil

Compatibilidade.

X


xPar2

nil

Compatibilidade.

X


cQuery

caractere

String contendo a query que será aberta.

X


aValues

vetor

Array de strings para fazer BIND dos parâmetros

X


Retorno

Nome

Tipo

Descrição

cRet

caractere

Retorna sempre uma string vazia.

Informações
icontrue
titleObservações
  • Essa função comporta-se internamente da mesma forma que a função TCGenQry(), para mais detalhes consulte a documentação da mesma.
  • A query informada para abertura deve usar o identificador de bind "?" – (interrogação – ) para indicar os pontos onde os valores informados no array devem ser utilizados.
  • Mesmo que o Banco de Dados utilizado possua uma notação diferente para parametrização de valores – - como é o caso do Banco de Dados ORACLE – - deve ser usado o caractere "?" (interrogação), que será ajustado internamente pelo DBAccess para o Banco utilizado na conexão atual.
  • A quantidade de "?" na Query deve corresponder ao número de elementos do array aValues informado.
  • A substituição dos valores é feita na ordem das interrogações na Query: primeira interrogação corresponde ao primeiro elemento do array, segunda interrogação corresponde ao segundo elemento do array, e assim sucessivamente.
  • O uso desta função facilita para o desenvolvedor e para a API Cliente do Banco de Dados utilizado, tornando a tarefa de parser e cache de statements do banco mais eficientes.
  • Os valores informados no array aValues devem ser do tipo "C" Caractere do AdvPL. Caso um parâmetro informado como string deva ser interpretado como um dado numérico pelo SGDB, informe o número preferencialmente sem espaços em branco, e quando o valor não for inteiro – - tiver parte decimal – - utilize o "." (ponto) como separador decimal. Normalmente os bancos de dados realizam o ajuste e interpretação do valor como número automaticamente.
  • O Array de parâmetros pode ser informado como uma variável AdvPL ou diretamente como um array montado como parâmetro na chamada da função.
  • Os dados informados no array são considerados apenas no momento da abertura da Query.
  • Esta funcionalidade está disponível a partir do TOTVS Application Server com build igual ou superior a 7.00.170117A gerados após 12/2008, e requer o DBAccess Build 20180606 ou superior.
Nota
icontrue
titleAtenção

Esta função não está disponível para uso com RPODB=SQLITE.

Exemplos

Bloco de código
languagecpp
themeEclipse
linenumberstrue
collapsefalse
#include 'totvs.ch'
#include 'topconn.ch'
 
USER FUNCTION TEST()
 
Local cAlias := "QRY"
Local cTable1 := "T1"
Local cQry   := "SELECT CPOC1, CPOC2 FROM T1 WHERE T1.CPOC2 = ? "
 
TCLink()
 
IF TcCanOpen(cTable1)
    TCDelFile(cTable1)
Endif
 
DBCreate(cTable1, {{"CPOC1", "C", 10, 0}, ;
                   {"CPOC2", "C", 10, 0}}, "TOPCONN")
 
DBUseArea(.T., "TOPCONN", cTable1, (cTable1), .F., .F. )
 
(cTable1)->( DBAppend( .F. ) )
(cTable1)->CPOC1 := "JOHN"
(cTable1)->CPOC2 := "PESSOA"
(cTable1)->( DBCommit() )
 
DBCloseArea()
 
DBUseArea(.T., "TOPCONN", TCGenQry2(NIL,NIL,cQry, { "PESSOA" } ), (cAlias) , .F., .T. )
 
WHILE !Eof()
    CONOUT("CPOC1 = " + (cAlias)->CPOC1)
    CONOUT("CPOC2 = " + (cAlias)->CPOC2)
    DbSkip()
ENDDO
 
DBCloseArea()
 
TCUnlink()
 
RETURN

...