A função se tornou uma STORED FUNCTION, uma função armazenada no servidor.
E assim dá pra criar FUNCTIONs, PROCEDUREs, pra tudo que precisar.
No caso daquele view, o select é de um único registro, senão apareceria pra toda tabela.
Como usaria isso no programa?
conexão:Execute( "SELECT * FROM view_nfedestinatario" )
conexao:Execute( "SELECT XmlTag( 'algo', 'algo' )" )
conexão:Execute( "SELECT XmlTag( " + StringSql( arquivo->x ) + ", " + StringSql( arquivo->y ) + ")" )
A função fica disponÃvel pra uso até no aplicativo.
Novamente reforçando o que já comentei por aqui:
Escolher linguagem de programação? Harbour, mobile, Linux, internet?
Que tal o SQL? E poder usar em qualquer linguagem de programação?
Sabe desenvolver pra Web? Mobile? IPHone? IOS?
Pois é... o aplicativo e o programador já ficam meio caminho andado....
O que falta? mostrar na tela, fazer um browse, etc... isso se torna mais fácil, nem precisa ser exatamente com Harbour.
E novamente reforçando:
Passar de DBF pra MySQL.... vale a pena?
DBF só guarda informação, MySQL é uma infinidade de recursos.
Nota:
Quando digo MySQL, é qualquer banco de dados cliente/servidor que tenha esses recursos.
Pode ser MySQL, MariaDB, PerconaServer, Oracle, PostgresSQL, SQL Server, Access, e muitos outros.
Isso é recurso do BANCO DE DADOS, não confunda isso com a conexão que vai ser usada (ADO, SQLMIX, hbMySql, etc).