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

      Pessoal, fiz uma procedure e quando concateno o sql funciona, porém ao definir a instrução direto no cursor retorna uma exceção.
      Seguem os fontes:


      create or replace
      function listarcor
      (
      codigos in varchar2
      ) return types.cursortype as

      cr types.cursorType;
      sSql varchar2(1000);
      begin
      sSql := 'select * from cadcor' ||
      ' where cadcor.codigo in (select column_value from table(strings.split_as_table('''|| codigos ||''')))';

      open cr for sSql;

      return cr;
      end listarcor;


      create or replace
      function listarcor
      (
      codigos in varchar2
      ) return types.cursortype as

      cr types.cursorType;
      sSql varchar2(1000);
      begin
      --sSql := 'select * from cadcor' ||
      --' where cadcor.codigo in (select column_value from table(strings.split_as_table('''|| codigos ||''')))';

      open cr for
      select * from cadcor
      where cadcor.codigo in (select * from table(strings.split_as_table(codigos)));

      return cr;
      end listarcor;

      A exceção lançada é;
      ORA-22905: cannot access rows from a non-nested table item

      #103300
      Avatar de diegolenhardtdiegolenhardt
      Participante

        da uma olhada em REFCURSOR…

        😀

        #103307
        Avatar de brunog3brunog3
        Participante

          Descobri que o erro era porque a tabela retornada na função precisava ser uma “nested table”.
          Eu troquei a definição de tipo e agora está funcionando.
          Tb tive que fazer um cast para o tipo que criei.

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