sql >> Database teknologi >  >> RDS >> Oracle

Har Oracle 12 problemer med lokale samlingstyper i SQL?

I yderligere eksperimenter fandt vi ud af, at problemerne er endnu dybere, end det er blevet antaget.

For eksempel forskellige elementer brugt i pakken buggy_report vi kan få en ORA-03113: end-of-file on communication channel når du kører scriptet (i spørgsmålet). Det kan gøres ved at ændre typen af ​​t_id_table til VARRAY eller TABLE .. INDEX BY .. . Der er mange måder og variationer, der fører os til forskellige undtagelser, som er uden for emnet for dette indlæg.

Den ene mere interessante ting er kompileringstiden for buggy_report pakkespecifikation kan tage op til 25 sekunder, når det normalt tager omkring 0,05 sekunder. Jeg kan bestemt sige, at det afhænger af tilstedeværelsen af ​​TYPE t_id_table parameter i pipe_table funktionsdeklaration og "long time compilation" sker i 40% af installationssager. Så det ser ud til, at problemet med local collection types in SQL vises latent under kompileringen.

Så vi ser, at Oracle 12.1.0.2 åbenbart har en fejl i realiseringen af ​​brugen af ​​lokale samlingstyper i SQL.

De minimale eksempler for at få ORA-22163 og ORA-03113 følger. Der antager vi den samme buggy_report pakke som i spørgsmålet.

-- 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. Sådan kontrolleres størrelsen af ​​en database i MySQL

  2. MySQL JOIN - Returner NULL for duplikerede resultater i venstre tabel

  3. Rapportering af SQLDIAG-ydelsesdata via RML Utilities Tool | SQL Server Performance Fejlfinding -7

  4. Multi-part identifikatoren TextBox1.Text kunne ikke bindes i C# ASP.NET?