Bom dia galera!
Com relação a FWPreparedStatement [ http://tdn.totvs.com/display/PROT/FWPreparedStatement ], pergunto :
1) essa classe implementa internamente Embedded SQL [ http://tdn.totvs.com/display/framework/Embedded+SQL ]
2) para construção de querys devemos utilizar essa classe agora, e não mais usar construções "Embedded SQL"
O foco da pergunta é performance e boa prática (entenda-se boa prática o que é recomendado pela Totvs o uso, principalmente para novos desenvolvimentos)
Agradecido!
Só complementando com mais uma pergunta:
3) ainda é necessário usar a função ChangeQuery(), pois essa função não está implementada internamente na FWPreparedStatement
— Luciano S. de Souza 08 de Nov de 2018Tem um exemplo de uso desta classe na documentação do FWRestModel http://tdn.totvs.com/display/framework/FWRestModel+-+API+RESTful+dos+modelos+de+dados+do+Protheus :
cQuery += "SELECT RE_C_N_O"
cQuery += GetFromQryAlias(cTable) cQuery += GetWhereQryAlias(cTable, cFilter)
oStatement := FWPreparedStatement():New(cQuery) cQuery := oStatement:getFixQuery() cQuery := ChangeQuery(cQuery)
MPSysOpenQuery(cQuery, @cQryAlias)
oStatement:Destroy()
FwFreeObj(oStatement)
— Uilon Kelf Orlando Eugenio 08 de Nov de 2018