Execução de uma função do Oracle no Delphi

Delphi

08/04/2010

Tenho uma função no oracle que preciso atribuir a um campo de um dataset.   Esta funcção recebe dois valores. O primeiro representa o domínio dos valores (Ex.: 28736) o segundo o campo para ser pesquisado. Conforme representação abaixo.   Domínio campo   Descrição XXXXX    XXXX     xxxxxxxxxx ... 28736    1           Solteiro 28736    2           Casado ... XXXXX   XXXX      XXXXXXXXX   mdominio  = 28736    mdescricao=2   A função  get_domainevaleur  está no Oracle.   Qual a sintaxe correta para executar a função dentro do Delphi.  cdsProfilHistoDETAIL_AVANT.AsString := get_domainevaleur( mdominio , mdescricao);   Obrigado.
Rfb

Rfb

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

08/04/2010

não é possível colocar a chama na própria instrução SQL?


select [...], get_domainevaleur(X, Y) DETAIL_AVANT
from [...]


GOSTEI 0
Rfb

Rfb

08/04/2010

OK!  em alguns casos eu faço exatamente isso.   Mais por detalhes desta implementação, preciso executar esta função dentro do Delphi.   Como seria a sintaxe correta?
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

08/04/2010

faça da mesma forma que você executaria somente a função no oracle, porém num cds separado.
GOSTEI 0
Jair N.

Jair N.

08/04/2010

Oi, acaso tem como pegar a função  numa TQuery?

"SELECT get_domain.* FROM TABLE(get_domainevaleur( mdominio , mdescricao)) AS get_domain"

É um Cursor Implícito?

"SELECT get_domainevaleur( mdominio , mdescricao) AS get_domain FROM dual"



GOSTEI 0
Emerson Nascimento

Emerson Nascimento

08/04/2010

você deverá fazer EXATAMENTE como faz no aplicativo console do Oracle:

SELECT get_domainevaleur(X, Y) AS get_dmn (funciona dessa forma no SQL SERVER)

SELECT get_domainevaleur(X, Y) AS get_dmn
FROM alguma_tabela_de_sistema (funciona dessa forma no FIREBIRD)


se alguma dessas formas funcionar, no Delhi ficará assim:
cds.close;
cds.commandtext := 'SELECT get_domainevaleur( :mdominio, :mdescricao) AS get_dmn'
cds.params.parambyname('mdominio').asinteger := valor_desejado;
cds.params.parambyname('mdescricao').asinteger := valor_desejado;
cds.open;
cdsDestino.edit;
cdsDestinoCampoDesejado.AsString := cds.FieldByName('get_dmn').AsString;


ou assim:
cds.close;
cds.commandtext := 'SELECT get_domainevaleur(' + inttostr(valor_desejado) + ',' + inttostr(valordesejado) + ') AS get_dmn'
cds.open;
cdsDestino.edit;
cdsDestinoCampoDesejado.AsString := cds.FieldByName('get_dmn').AsString;


GOSTEI 0
POSTAR