Pular para o conteúdo
  • Este tópico contém 1 resposta, 2 vozes e foi atualizado pela última vez 16 anos, 7 meses atrás por Avatar photoLeonardo Litz.
Visualizando 2 posts - 1 até 2 (de 2 do total)
  • Autor
    Posts
  • #88145
    Scheidt
    Participante

      Boa tarde.

      Se possível gostaria de uma ajuda com relação a retorno de valor DEFAULT definido nas variávies de entrada de uma procedure.

      Segue abaixo um exemplo onde foi definido um valor DEFAULT para as variáveis p_valor2, p_valor3, p_valor4.

      A dúvida é quando eu executo a procedure passando NULL, neste caso teria que assumir o valor DEFAULT mas não é o que está acontecendo.

      Exemplo da criação da procedure:

      CREATE OR REPLACE
      PROCEDURE proc_teste
      (
      p_valor1 IN CHAR,
      p_valor2 IN CHAR DEFAULT ‘B’,
      p_valor3 IN CHAR DEFAULT ‘C’,
      p_valor4 IN CHAR DEFAULT ‘D’,
      p_valor5 IN CHAR)
      IS
      BEGIN
      dbms_output.PUT_LINE(‘p_valor1=’ || p_valor1);
      dbms_output.PUT_LINE(‘p_valor2=’ || p_valor2);
      dbms_output.PUT_LINE(‘p_valor3=’ || p_valor3);
      dbms_output.PUT_LINE(‘p_valor4=’ || p_valor4);
      dbms_output.PUT_LINE(‘p_valor5=’ || p_valor5);
      END;

      Executando a procedure:

      DECLARE
      P_VALOR1 CHAR(200);
      P_VALOR2 CHAR(200);
      P_VALOR3 CHAR(200);
      P_VALOR4 CHAR(200);
      P_VALOR5 CHAR(200);
      BEGIN
      PROC_TESTE(
      P_VALOR1 => P_VALOR1,
      P_VALOR2 => P_VALOR2,
      P_VALOR3 => P_VALOR3,
      P_VALOR4 => P_VALOR4,
      P_VALOR5 => P_VALOR5
      );
      END;

      Retorno da procedure:

      p_valor1=
      p_valor2=
      p_valor3=
      p_valor4=
      p_valor5=
      Processo encerrado.

      Existe algum tratamento específico para que retorne o valor DEFAULT definido na procedure?

      At.
      Marco

      #88169
      Avatar photoLeonardo Litz
      Participante

        Olá Scheidt.

        Os valores default só são considerados apenas quando na chamada da procedure não são declarados, por exemplo:


        exec proc_teste ( p_valor1 => '1',
        p_valor5 => '2');

        Neste caso será assumido o valor default do parametro.

        Caso vc passe um valor para o parametro, mesmo que este valor seja nulo, ele não considerará o default, por exemplo:


        exec proc_teste (p_valor1 => '1',
        p_valor2 => null,
        p_valor3 => null,
        p_valor4 => null,
        p_valor5 => '2) ;

      Visualizando 2 posts - 1 até 2 (de 2 do total)
      • Você deve fazer login para responder a este tópico.