Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да върна множество редове от съхранена процедура на oracle от множество курсори?

Моето предложение ще бъде да вмъкнете редовете от курсора във временна таблица. След това присъединете временната таблица към вашата съществуваща таблица за критериите за филтриране, които споменавате. Псевдокод:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изпълнение на SQL скрипт в oracle db един израз наведнъж

  2. създайте Oracle View за сравняване на данни въз основа на условия

  3. Най-добрият начин за получаване на имейл след неуспешно едновременно изпълнение (sql - тригер - приложение)

  4. Създайте тригер на Oracle от потребител, който слуша събития за друг потребител

  5. Деактивирайте тригерите и активирайте отново тригерите, но междувременно избягвайте промяна на таблицата