Pular para o conteúdo
Visualizando 6 posts - 1 até 6 (de 6 do total)
  • Autor
    Posts
  • #75943
    izaura
    Participante

      Pessoal, a procedure abaixo qdo criada na versão 8 dá a msg “Procedure criada com erro de compilação”. Alguém pode dizer o q há de errado??

      CREATE OR REPLACE PROCEDURE “P_BAG_BUSCALOJAS”
      (p_id in NUMBER,
      p_TpOcor in varchar2,
      p_Cursor out TYPES.cursorType)
      is
      begin

      if p_TpOcor is not null then

      OPEN p_Cursor FOR

      SELECT ID,NOME,EMAIL,ENDERECO,NUMERO,COMPLEMENTO,BAIRRO,CIDADE,TIPO,
      ENDERECO || ‘, ‘ || NUMERO AS END,
      DECODE (TIPO,1,’EMPRESA REPARADORA’,2,’PONTO DE COLETA’,3,’EMPRESA DE HANDLING’) NMTIPO
      FROM BAG_LOJASCONVENIADAS
      WHERE TIPO in (1,2)
      ORDER BY TIPO,NOME;

      else

      OPEN p_Cursor FOR

      SELECT ID,NOME,EMAIL,ENDERECO,NUMERO,COMPLEMENTO,BAIRRO,CIDADE,TIPO,
      DECODE (TIPO,1,’EMPRESA REPARADORA’,2,’PONTO DE COLETA’,3,’EMPRESA DE HANDLING’) NMTIPO
      FROM BAG_LOJASCONVENIADAS
      WHERE TIPO = p_id
      ORDER BY TIPO,NOME;

      end if;

      END P_BAG_BUSCALOJAS;

      #75944
      Marcio68Almeida
      Participante

        após tentar criar / compilar a sua procedure você tentou usar o comando show errors no sqlplus ?
        ele mostra o erro que ocorreu no último processo executado no sqlplus…

        #75945
        izaura
        Participante

          [quote=”Marcio68Almeida”:37242tv9]após tentar criar / compilar a sua procedure você tentou usar o comando show errors no sqlplus ?
          ele mostra o erro que ocorreu no último processo executado no sqlplus…[/quote]

          Usei o comando show err e dá a msg q não existe erro.

          #75949
          Marcio68Almeida
          Participante

            Faz muito tempo que não faço procedures com cursores, mas creio que você deva primeiro definir os cursores e depois, dentro do begin, chamar um ou outro…
            Tem que ver exemplos de cursores… 😳

            #75956
            mhlourenco
            Participante

              Isaura, o q o Márcio disse ele tem razã … experimente declarar o cursor que vc estiver usando fora da declaração das variáveis, usando a seguinte sintaxe:

              ….

              TYPE T_CURSOR IS REF CURSOR;

              –Recebe o cursor do SQL a ser executado
              V_CURSORFETCH1 T_CURSOR;

              …..

              #76058
              Anônimo

                tem razão sim…

                Na verdade o cursor deve ser uma parametro de saída apenas…
                (p_id in NUMBER,
                p_TpOcor in varchar2,
                p_Cursor out TYPES.cursorType)

                Isso indica que vc vai retornar um cursor, exatamente como está fazendo, só que faltou a declaração desse mesmo cursor dentro do bloco… para fazer as operações que está pretendendo…

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