Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Motta

Function que retorna varchar2

Recommended Posts

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.