Pular para o conteúdo
Visualizando 2 posts - 1 até 2 (de 2 do total)
  • Autor
    Posts
  • #96702
    DougF
    Participante

      Bom dia galera.
      Sou por novo aqui, e estou começando com oracle e tendo algumas pequenas duvidas.

      É o seguinte… tenho uma procedure que recebe um parâmetro referente a orderby para ordenar dinamicamente, com sqlserver eu fazia com concatenando string e tals, mas sei que com oracle da pra fazer sem esse recurso.
      Segue código.

      PROCEDURE EXPROCEDURE(
      p_OrderBy IN NUMBER,
      io_cursor OUT c_cursor
      )

      IS

      v_cursor c_cursor;

      BEGIN

      OPEN v_cursor FOR

      SELECT …

      ORDER BY p_OrderBy;

      io_cursor := v_cursor;

      END EXPROCEDURE;

      Lembrando que isso fora da procedure funciona perfeitamente pra ordenar dinamicamente.

      Algumas soluções que cheguei que resolvem em parte.

      ORDER BY DECODE(p_OrderBy, 1, TBL_EX.CAMP1,
      2, TBL_EX.CAMP2) ;

      Agradeço a atenção, caso tenham apenas alguém lugar pra eu procurar já é o suficiente, já que todos exemplo na internet que achei são para concatenar string =/

      #96716
      Ishii
      Participante

        Olá,

        Embora não consiga visualizar a razão de um select de um cursor estar ordenado segue uma forma de se resolver:

        create or replace procedure sp_teste_order (pColOrder in varchar2) is

        cursor clinhaord is

        select * from user_objects order by pColOrder;

        begin

        for rLinhaOrd in clinhaord loop
        --
        insert into teste
        values
        (rLinhaOrd.Object_Name);
        --

        end loop;

        end sp_teste_order;

        Altere o que for necessário , mas isso funciona bem…

        []s Ishii

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