Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Czy Oracle 12 ma problemy z lokalnymi typami kolekcji w SQL?

W dalszych eksperymentach odkryliśmy, że problemy są jeszcze głębsze, niż zakładano.

Na przykład różne elementy użyte w pakiecie buggy_report możemy uzyskać ORA-03113: end-of-file on communication channel podczas uruchamiania skryptu (w pytaniu). Można to zrobić zmieniając typ t_id_table do VARRAY lub TABLE .. INDEX BY .. . Istnieje wiele sposobów i odmian prowadzących nas do różnych wyjątków, które nie są tematem tego posta.

Jeszcze jedną interesującą rzeczą jest czas kompilacji buggy_report Specyfikacja pakietu może potrwać do 25 sekund, podczas gdy zwykle zajmuje to około 0,05 sekundy. Z całą pewnością mogę powiedzieć, że zależy to od obecności TYPE t_id_table parametr w pipe_table deklaracja funkcji i "długa kompilacja" zdarzają się w 40% przypadków instalacji. Wygląda więc na to, że problem z local collection types in SQL pojawiają się utajone podczas kompilacji.

Widzimy więc, że Oracle 12.1.0.2 ma oczywiście błąd w realizacji lokalnych typów kolekcji w SQL.

Minimalne przykłady do pobrania ORA-22163 i ORA-03113 podążać. Tam zakładamy ten sam buggy_report pakiet jak w pytaniu.

-- produces 'ORA-03113: end-of-file on communication channel'
DECLARE   
  l_cur buggy_report.t_info_cur;

  FUNCTION get_it RETURN buggy_report.t_info_cur IS BEGIN RETURN buggy_report.get_cursor(); END;    
BEGIN
   l_cur := get_it();

   dbms_output.put_line('');
END;
/

-- produces 'ORA-22163: left hand and right hand side collections are not of same type'
DECLARE  
  l_cur buggy_report.t_info_cur;

  PROCEDURE hello IS BEGIN NULL; END;
BEGIN
  l_cur := buggy_report.get_cursor;

  -- comment `hello` and exception disappears
  hello;

  CLOSE l_cur;
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. Powtarzające się wartości w kolumnie

  2. Czy w wyzwalaczu Oracle mogę przypisać nowe i stare do zmiennej rowtype?

  3. PLS-00201:należy zadeklarować identyfikator UTIL_FILE

  4. Różnice między MySQL a Oracle DB

  5. Tabele historii poprawek w aplikacjach Oracle (11i/R12.1/R12.2)