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

SQL за актуализиране, пропускане на заключена заявка и Java Multi Threading - Как да поправя това

Бих избрал нещо подобно:Курсор за избиране на редовете за актуализиране и използване на клаузата LIMIT, за да получите първите десет налични.

create table gm_temp
as select rownum id, table_name obj_name, date '2011-01-01' + rownum create_date 
from all_tables where rownum < 500;

CREATE TYPE tab_number IS TABLE OF NUMBER;

DECLARE
  cursor c_table IS 
    SELECT id FROM gm_temp ORDER BY create_date DESC FOR UPDATE OF id SKIP LOCKED;
  t_table_src tab_number := tab_number();
BEGIN
  OPEN c_table;
  FETCH c_table BULK COLLECT INTO t_table_src LIMIT 10;
  CLOSE c_table;
  dbms_output.put_line(':'||t_table_src.count||':'||t_table_src(1));
END;

Всъщност, първо бих видял дали обработката на ВСИЧКИ оставащи редове като набор би била по-добра от многопоточното.

След това, ако реших, че имам нужда от някаква форма на многопоточност, бих погледнал конвейерни функции с разрешен паралел (ако приемем, че съм на Enterprise Edition).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използване на Oracle:Мога ли да използвам „динамично“ създадена променлива в клаузата за завъртане?

  2. % влиза в PreparedStatement на Java

  3. Курсорът в процедурата връща повече стойности от заявката

  4. Проблем с NHibernate TransactionScope с Oracle 11g

  5. Страниране на резултатите от заявката на Oracle без метод за достъп до данни TABLE FULL SCAN