Motta 645 Denunciar post Postado Novembro 24, 2005 Quando crio uma function no Oracle que retorne um varchar2 , em qualquer select que faço nesta o retorno vem com um tamanho muito grande independente do tamanho real retornado na function. Consigo contornar o problema fazendo um SUBSTR no select que chama a FUNCTION porém acho pouco prático. Não se pode definir um tamanho no return da function , pensei em criar um tipo mas poderia ter problemas com o front-end chamador, alguém sabe alguma solução ? Ambiente Oracle9i Release 9.2.0.6.0 - Production JServer Release 9.2.0.6.0 - Production SO - Unix Um exemplo de function em que tenho este problema CREATE OR REPLACE FUNCTION EXIBE_MOEDA(PVAL IN NUMBER) RETURN VARCHAR2 IS -- -- formata uma saida em moeda -- VS_SAIDA CHAR(17); BEGIN VS_SAIDA := LPAD(TO_CHAR(PVAL,'L999G999G990D99MI','NLS_NUMERIC_CHARACTERS = '',.'' NLS_CURRENCY = ''R$ '' '),17,' '); RETURN VS_SAIDA; END; / Só faz exibir um valor no formato de moeda. Compartilhar este post Link para o post Compartilhar em outros sites
alphamek 2 Denunciar post Postado Novembro 25, 2005 Motta, A função foi compilada sem erros nenhum, seu problema mesmo é na saída da função. Ela está saindo como, passa um exemplo? E depois passa um exemplo de como você queira que ela saia? Abraços, http://forum.imasters.com.br/public/style_emoticons/default/grin.gif Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Novembro 25, 2005 O problema é o tamanho do campo de saída. Veja pelo sql sheet por exemplo SQLWKS> SELECT EXIBE_MOEDA(111.11),user 2> FROM DUAL 3> EXIBE_MOEDA(111.11) USER -------------------------------------------------------------------------------- ------------------------------ R$ 111,11 SAUDE 1 row selected. O que eu queria era limitar o tamanho do campo de saida, conseguir 'tipar' esta saida. Não sei se fui claro. []´s Compartilhar este post Link para o post Compartilhar em outros sites
alphamek 2 Denunciar post Postado Novembro 27, 2005 Bom, talvez possa resolver limitando o tamanho das colunas de saída, exemplo: Dentor do script coloque: col EXIBE_MOEDA format 999999 col USER format a20 Agora veja a saída, ficará formatada. Esses comandinhos são de formatação do SQL*PLUS, eles estão saindo assim, devido ao tamanho da variável ou da coluna de alguma tabela. Verifique se resolveu. Abraços, http://forum.imasters.com.br/public/style_emoticons/default/grin.gif Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Novembro 28, 2005 http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Compartilhar este post Link para o post Compartilhar em outros sites
alphamek 2 Denunciar post Postado Novembro 28, 2005 Funciono Legal Motta? Abraços, :blink: Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Novembro 28, 2005 vou testar depois , mas valeu a dica. Compartilhar este post Link para o post Compartilhar em outros sites
alphamek 2 Denunciar post Postado Novembro 28, 2005 Depois me fala para ver... http://forum.imasters.com.br/public/style_emoticons/default/shifty.gif Compartilhar este post Link para o post Compartilhar em outros sites