sql >> Databasteknik >  >> RDS >> Oracle

Hur returnerar man flera rader från oracle-lagrade procedurer från flera markörer?

Mitt förslag kommer att vara att infoga raderna från markören i en tillfällig tabell. Slå sedan ihop den tillfälliga tabellen med din befintliga tabell för filterkriterierna du nämner. Psuedokod:

create or replace function my_func
return sysrefcursor
is
    cursor cursor_one is 
        SELECT * FROM table_one ; 

    cursor cursor_two is 
        SELECT * FROM table_one ; 
    BEGIN    

     FOR current_row in cursor_one
      loop 

          -- do some modification on each row and insert into temporary table

      end loop; 



     FOR current_row in cursor_two
      loop 

          -- do some modification on each row and insert into temporary table

      end loop; 


    -- results from cursor 1 and 2 exist in temporary table

    open out_cursor for
     select t.* from
      my_temp_table t
      join
      my_other_table tt
      on (t.col1 = tt.col1) -- or whatever columns are appropriate
      where t.col2 = 'some criteria' -- or whatever filter criteria you like.

    return out_cursor;

    END;  


  1. Dynamisk pivot i oracle sql

  2. Oändlig loop CTE med OPTION (maxrekursion 0)

  3. Hur lägger jag till ett mellanslag framför mitt nummer om det är en ensiffrig?

  4. Sorteras databastabeller före eller efter att de hämtats?