Pular para o conteúdo
Visualizando 3 posts - 1 até 3 (de 3 do total)
  • Autor
    Posts
  • #99123
    eduardoamf
    Participante

      Pessoal, estou com dificuldade de chamar uma Procedure dentro de uma outra Procedure.

      já tentei com o OWNE.nome_da_procedure, call …
      até com elza sozinha, deu erro ora-00306..

      Alguem sabe como me ajudar??

      Obrigado!!

      #99126
      felipeg
      Participante

        Boa tarde

        Pra chamar a procedure é só declarar a mesma (sem exec sem nada) e passar os parâmetros ( se existirem).

        O exemplo abaixo chama a proc 1, que imprime um valor na tela, e passa esse mesmo parâmtero pra 2, que também imprime em tela.

        SQL> set serveroutput on;
        SQL> CREATE OR REPLACE PROCEDURE IMPRIME_TEXTO2(v_string2 IN VARCHAR2)
        2 AS
        3 BEGIN
        4 Dbms_Output.put_line(v_string2);
        5 END;
        6 /

        Procedimento criado.

        SQL> CREATE OR REPLACE PROCEDURE IMPRIME_TEXTO(v_string IN VARCHAR2)
        2 AS
        3 BEGIN
        4 Dbms_Output.put_line(v_string || ‘ chamada proc1’);
        5 IMPRIME_TEXTO2(v_string || ‘ chamada proc2’);
        6 END;
        7 /

        Procedimento criado.

        SQL> EXEC IMPRIME_TEXTO(‘ HELLO WORLD’);
        HELLO WORLD chamada proc1
        HELLO WORLD chamada proc2

        Lembrando que se a procedure for de outro schema o usuário deverá ter grant de execute na mesma.

        Atenciosamente,
        Felipe.

        #99138
        eduardoamf
        Participante

          [quote=”felipeg”:2c4pmcq2]Boa tarde

          Pra chamar a procedure é só declarar a mesma (sem exec sem nada) e passar os parâmetros ( se existirem).

          O exemplo abaixo chama a proc 1, que imprime um valor na tela, e passa esse mesmo parâmtero pra 2, que também imprime em tela.

          SQL> set serveroutput on;
          SQL> CREATE OR REPLACE PROCEDURE IMPRIME_TEXTO2(v_string2 IN VARCHAR2)
          2 AS
          3 BEGIN
          4 Dbms_Output.put_line(v_string2);
          5 END;
          6 /

          Procedimento criado.

          SQL> CREATE OR REPLACE PROCEDURE IMPRIME_TEXTO(v_string IN VARCHAR2)
          2 AS
          3 BEGIN
          4 Dbms_Output.put_line(v_string || ‘ chamada proc1’);
          5 IMPRIME_TEXTO2(v_string || ‘ chamada proc2’);
          6 END;
          7 /

          Procedimento criado.

          SQL> EXEC IMPRIME_TEXTO(‘ HELLO WORLD’);
          HELLO WORLD chamada proc1
          HELLO WORLD chamada proc2

          Lembrando que se a procedure for de outro schema o usuário deverá ter grant de execute na mesma.

          Atenciosamente,
          Felipe.[/quote]

          Blz, funcionou… estava colocando com o tipo dos parametros e estava dando erro!!

          Valeu, obrigado!!!

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