Execução de uma função do Oracle no Delphi
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
Curtidas 0
Respostas
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 [...]
select [...], get_domainevaleur(X, Y) DETAIL_AVANT
from [...]
GOSTEI 0
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
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.
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"
"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
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;
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