Fórum Execução de uma função do Oracle no Delphi #134503

08/04/2010

0

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

Responder

Posts

09/04/2010

Emerson Nascimento

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


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


Responder

Gostei + 0

09/04/2010

Rfb

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?
Responder

Gostei + 0

09/04/2010

Emerson Nascimento

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

Gostei + 0

09/04/2010

Jair N.

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"



Responder

Gostei + 0

09/04/2010

Emerson Nascimento

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;


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar