Página 1 de 1

Dúvida sobre passar recordset ADO por funções

Enviado: 01 Jul 2020 18:25
por JoséQuintas
Estou com uma dúvida sobre passar o recordset ADO por funções.

Considerando:

oTemporario := conexão:Execute( "SELECT ...." )

O que seria melhor?

Função( oTemporario )

ou

Função( @oTemporario )

Teoricamente, passando o ponteiro economiza memória, mas..... sinceramente não sei.

Dúvida sobre passar recordset ADO por funções

Enviado: 02 Jul 2020 23:02
por Fernando queiroz
JoséQuintas escreveu:Estou com uma dúvida sobre passar o recordset ADO por funções.

Considerando:

oTemporario := conexão:Execute( "SELECT ...." )

O que seria melhor?

Função( oTemporario )

ou

Função( @oTemporario )

Teoricamente, passando o ponteiro economiza memória, mas..... sinceramente não sei.
tenho usado bastante quando quero modificar o conteúdo do parâmetro passado, se não for alterar passo sem o @, não sabia que economizava memoria

Dúvida sobre passar recordset ADO por funções

Enviado: 03 Jul 2020 11:53
por JoséQuintas
Fernando queiroz escreveu:tenho usado bastante quando quero modificar o conteúdo do parâmetro passado, se não for alterar passo sem o @, não sabia que economizava memoria
Passando por referência está passando o endereço da mesma variável, o chamado pointer/ponteiro.
Desse jeito a função usa a mesma variável.
SEM referência, é criada uma cópia da variável com o mesmo conteúdo.

É que geralmente trabalhamos com variáveis de conteúdo pequeno, e nem importa muito economizar memória.
Difícil, mas não impossível, poderia ser a geração de um SPED para o governo:
Imagine uma variável de 500MB, passando por uma função: vai ser 500MB da original, 500MB na cópia pra função, e 500MB pro retorno. 1.5GB total.
Por referência, fica nos 500MB.
Dependendo da memória do computador, a rotina poderia não funcionar, ou o Windows ficar sobrecarregado.

Acaba sendo interessante lembrar disso, porque temos todo tipo de situação.