# Oracle 10g Compatibility ## Două versiuni disponibile pentru SCRIE_JC_2007 ### 📄 Fișiere: 1. **`scrie_jc_2007.sql`** - Versiunea PRINCIPALĂ (FORALL) - Pentru Oracle 11g, 12c, 18c, 19c, 21c, 23c - Folosește `FORALL` pentru performanță maximă - Performanță: ~15-30ms pentru <10k rows 2. **`scrie_jc_2007_oracle10g.sql`** - Versiunea pentru Oracle 10g - Pentru Oracle 10.2.0.5 (și versiuni mai vechi) - Folosește `FOR LOOP` pentru compatibilitate - Performanță: ~20-50ms pentru <10k rows - Rezolvă eroarea PLS-00436 --- ## 🔧 Când să folosești fiecare versiune: | Versiune Oracle | Fișier de folosit | Performanță | |----------------|-------------------|-------------| | **8i - 10g** | `scrie_jc_2007_oracle10g.sql` | Bună (20-50ms) | | **11g - 23c** | `scrie_jc_2007.sql` | **Excelentă** (15-30ms) | --- ## ⚠️ Eroarea pe Oracle 10g (fără fix): ``` Error: PLS-00436: restrictie de implementare: nu se pot referi campurile din tabelul de inregistrari BULK In-BIND Line: 1501 Text: FORALL i IN 1..S.COUNT ``` **Cauza**: Oracle 10g nu permite `S(i).field` în FORALL când `S` este `TYPE TABLE OF cursor%ROWTYPE` **Soluție**: Folosește `scrie_jc_2007_oracle10g.sql` care înlocuiește FORALL cu FOR LOOP --- ## 📊 Diferențe tehnice: ### Versiunea FORALL (scrie_jc_2007.sql): ```sql FORALL i IN 1..S.COUNT UPDATE JC2007 J SET ... WHERE ...; FOR i IN 1..S.COUNT LOOP IF SQL%BULK_ROWCOUNT(i) = 0 THEN ... ``` ### Versiunea FOR LOOP (scrie_jc_2007_oracle10g.sql): ```sql FOR i IN 1..S.COUNT LOOP UPDATE JC2007 J SET ... WHERE ...; IF SQL%ROWCOUNT = 0 THEN ... END LOOP; ``` --- ## 🚀 Instalare pentru Oracle 10g: ```sql -- 1. Backup versiunea curentă (opțional) @scrie_jc_2007.sql -- 2. Instalează versiunea pentru Oracle 10g @scrie_jc_2007_oracle10g.sql ``` --- ## 📝 Note importante: - Ambele versiuni sunt **mult mai rapide** decât MERGE-ul original (60-120s) - Ambele versiuni au **aceeași logică de business** - Singura diferență: FORALL vs FOR LOOP - Dacă faci upgrade la Oracle 11g+, poți reveni la versiunea FORALL --- **Creat**: 2025-10-06 **Autor**: Optimizare Oracle compatibility