Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Comentário: Atualização da documentação ofocial

Pagetitle
TCGenQry2
TCGenQry2

Permite a abertura de uma query diretamente no banco de dados utilizado na conexão atual, mediante uso da RDD TOPCONN, informando através de um array de parâmetros os conteúdos dos campos para fazer BIND de valores na Query informada.

...

Sintaxe

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

...

 

...

)

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

...

...


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.

...

Exemplos

Bloco de código
languagecpp
themeEclipse

...

linenumbers

...

true

...

collapse

...

false
#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

...


Veja também

...