Files
ROMFASTSQL/proxmox/lxc108-oracle/sql/roa/README_ORACLE10G.md
Marius a567f75f25 Reorganize oracle/ and chatbot/ into proxmox/ per LXC/VM structure
- Move oracle/migration-scripts/ to proxmox/lxc108-oracle/migration/
- Move oracle/roa/ and oracle/roa-romconstruct/ to proxmox/lxc108-oracle/sql/
- Move oracle/standby-server-scripts/ to proxmox/vm109-windows-dr/
- Move chatbot/ to proxmox/lxc104-flowise/
- Update proxmox/README.md with new structure and navigation
- Update all documentation with correct directory references
- Remove unused input/claude-agent-sdk/ files

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 17:28:53 +02:00

2.3 KiB

Oracle 10g Compatibility

Director: proxmox/lxc108-oracle/sql/roa/

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):

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):

FOR i IN 1..S.COUNT LOOP
  UPDATE JC2007 J SET ... WHERE ...;
  IF SQL%ROWCOUNT = 0 THEN ...
END LOOP;

🚀 Instalare pentru Oracle 10g:

-- 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