Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Apakah Oracle 12 memiliki masalah dengan tipe koleksi lokal di SQL?

Dalam eksperimen lebih lanjut, kami menemukan bahwa masalah bahkan lebih dalam dari yang diperkirakan.

Misalnya, berbagai elemen yang digunakan dalam paket buggy_report kita bisa mendapatkan ORA-03113: end-of-file on communication channel saat menjalankan skrip (dalam pertanyaan). Hal ini dapat dilakukan dengan mengubah jenis t_id_table ke VARRAY atau TABLE .. INDEX BY .. . Ada banyak cara dan variasi yang mengarahkan kita ke pengecualian yang berbeda, yang di luar topik postingan ini.

Satu hal lagi yang menarik adalah waktu kompilasi buggy_report spesifikasi paket bisa memakan waktu hingga 25 detik, padahal biasanya dibutuhkan sekitar 0,05 detik. Saya pasti dapat mengatakan bahwa itu tergantung pada keberadaan TYPE t_id_table parameter di pipe_table deklarasi fungsi, dan "kompilasi lama" terjadi pada 40% kasus instalasi. Jadi sepertinya ada masalah dengan local collection types in SQL muncul secara laten selama kompilasi.

Jadi kita melihat bahwa Oracle 12.1.0.2 jelas memiliki bug dalam realisasi penggunaan tipe koleksi lokal di SQL.

Contoh minimal untuk mendapatkan ORA-22163 dan ORA-03113 mengikuti. Di sana kita mengasumsikan buggy_report yang sama paket seperti pada pertanyaan.

-- 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. Ekspresi Reguler untuk REGEXP_SUBSTR di Oracle

  2. Tidak dapat memuat pustaka dinamis 'C:\xampp\php\ext\php_oci8.dll' - %1 bukan aplikasi Win32 yang valid

  3. Oracle Apex:Buat bilah kemajuan saat menunggu hasil

  4. Oracle Berisi tidak berfungsi

  5. Apakah Petunjuk Paralel dalam SQL Dinamis Oracle berjalan secara paralel?