Duvida - tamanho padrão varchar2 no parametro de uma proc

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
tiagogen
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 4
Registrado em: Ter, 14 Dez 2010 11:18 am
Localização: SP

Estou com o seguinte problema.

Eu tenho uma proc que recebe como parametro um tipo varchar2.

Atualmente quando compilo a proc, o tamanho padrão desse varchar2 é 200.
Preciso passar uma string com tamanho maior que 1000

alguém sabe se existe alguma variavel de ambiente do oracle, ou alguma sugestão de como aumentar esse tamanho padrão no momento da compilacao?

exemplo:

Selecionar tudo

create or replace
PROCEDURE proc
  (
    variavel VARCHAR2 --> não consigo passar tam > 200
  )
IS 
vQtdeStop NUMBER;
BEGIN
vQtdeStop :=1;
END proc;
Erro na execucao:

Selecionar tudo

ORA-06502: PL/SQL: erro: character string buffer too small numérico ou de valor
ORA-06512: em line 8
rogenaro
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Sex, 30 Mar 2007 7:26 pm
Localização: Londrina - PR
Rafael O. Genaro

Que versão do banco?
No 10g pelo menos sei que o tamanho máximo para um varchar2 passado para uma procedure é de 32k. O problema não estaria em outro trecho de sua lógica, dentro da procedure? Na versão 8 o limite é de 4000.

O que esse teste retorna para você?

Selecionar tudo

declare 
  i number;
  procedure p1 ( v varchar2 )
  is
  begin
    dbms_output.put_line('OK: '||length(v));
  end p1;
begin
  i := 100;
  p1( lpad('.', i  , '.') ); 
  i := 1000;
  p1( lpad('.', 1000 , '.') );
  i := 32000;
  p1( lpad('.', 32000, '.') );
  i := 32767;
  p1( lpad('.', 32767, '.') );
  i := 32768;
  p1( lpad('.', 32768, '.') );
exception
  when others then
    dbms_output.put_line('Tamanho: '||i||' '||sqlerrm);
end;

Selecionar tudo

OK: 100
OK: 1000
OK: 32000
OK: 32767
Tamanho: 32768 ORA-06502: PL/SQL: numeric or value error: character string buffer too small
tiagogen
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 4
Registrado em: Ter, 14 Dez 2010 11:18 am
Localização: SP

Descobri que o problema ocorre quando eu passo os parametros pelo "executar" do sqldeveloper. Quando eu chamei a proc dentro de um bloco, deu certo! muito obrigado pela ajuda!
Responder
  • Informação
  • Quem está online

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