ChangeQuery e compatibilidade entre bancos
Adapta a escrita de uma consulta antes de abri-la no DBAccess.
Visão geral
ChangeQuery(cQuery) devolve uma string SQL ajustada ao banco em uso; não abre cursor nem executa a consulta. A documentação exige escrita ANSI, recomenda WHERE e descreve limites do parser: não é garantia de compatibilidade de toda função nativa de um SGBD. No código comunitário TCGenQry.PRW, a transformação aparece antes de TCGenQry/DbUseArea; aquele exemplo não delimita filial explicitamente, portanto não deve ser copiado como política de acesso. O exemplo editorial abaixo usa tabela fictícia e somente mede a string devolvida. Para consultas reais, revisar RetSqlName, filtros de filial, exclusão lógica e parâmetros vinculados. (TOTVS, s.d., ref. 1; EURAI, s.d., ref. 2)
Exemplo comentado
#Include "Protheus.ch"
User Function Ed299()
Local cSql := "SELECT CODIGO FROM LIVROS WHERE 1 = 1"
Local cAdaptada
// Tabela ficticia; nenhuma consulta e aberta.
cAdaptada := ChangeQuery(cSql)
ConOut(cValToChar(Len(cAdaptada)))
Return NilO tamanho depende do parser e do banco; não há conjunto de registros nem resultado numérico fixo. Em revisão: exemplo editorial não compilado nem executado em Protheus. Conferir includes, release, RDD e contexto antes de homologar.
- Não usar ChangeQuery como sanitizador de entrada ou substituto de autorização. Testar a consulta e seu plano nos bancos efetivamente homologados.
- Em revisão: exemplo editorial não compilado nem executado em Protheus. Conferir includes, release, RDD e contexto antes de homologar.

Comentários
Ainda não há comentários aprovados.
Entre com Google ou Microsoft para comentar.