function retorno de valor do tipo varchar

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
zenfra
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 23
Registrado em: Sex, 20 Jul 2007 12:49 pm
Localização: São Paulo - SP

Bom dia

Queri tirar uma dúvida quanto ao retorno de valores de uma função do tipo varchar...
Existe a possíbilidade de limitar o tamanho do campo que será retornado..

Por exemplo...

tenho uma função que retorna o nome de uma pessoa.. esse campo na tabela tem 100 posições, porém, quando é retornado pela função é retornado um campo com posições muito maior do que eu realmente preciso e não consigo definir um tamanho fixo

Alguém poderia me orientar?

O create de minha função está da seguinte forma...

Creata or replace function Func_nome(V_apac in varchar) return varchar
is ....

já tentei fazer isso

Creata or replace function Func_nome(V_apac in varchar) return varchar(100)
is ....

colocar o valor para o campo que será retornado, mas na compilação da função é gerado error...
gokden
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 264
Registrado em: Dom, 19 Ago 2007 8:18 pm
Localização: Ribeirão Preto - SP
Lucas de Souza

OCA Developer
Analista de sistemas

Assim, do jeito que você está tentando fazer, não sei se tem como...

mais existem muitas outras possibilidades para verificar isso =D

exemplos:
você pode fazer um 'IF', se a string que vai retornar for mais que 100 ele dá um erro:

Selecionar tudo

 if length(vv_string) > 100 then
raise vê_tamanho;
end if;
ou você pode usar o substr ou o rpad ou o lpad:

Selecionar tudo

 vv_string := substr(vv_string,1,100);
vv_string := rpad(vv_string,100);
vv_string := lpad(vv_string,100);
ehhh.... eu acho qui é isso =D
Tineks
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 365
Registrado em: Ter, 24 Mai 2005 2:24 pm
Localização: Araraquara - SP
Cristiano (Tineks)
Araraquara - SP

você poderia utilizar um substring direto no return..
por exemplo..

Selecionar tudo

SQL> DECLARE
  2     FUNCTION fun_RETORNA_NOME RETURN VARCHAR2 IS
  3        v_NOME VARCHAR2(20) := 'Jose da Silva';
  4     BEGIN
  5        RETURN  SUBSTR(v_NOME,1,4);
  6     END fun_RETORNA_NOME;
  7  BEGIN
  8     dbms_output.put_line('Nome : '||fun_RETORNA_NOME);
  9  END;
 10  /
Nome : Jose

PL/SQL procedure successfully completed.
[]'s
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 7 visitantes