Programmeinheiten professionell bauen
- Prozeduren und Funktionen erstellen und verwalten
- Packages: Overloading, Initialisierung, persistenter Package-State
- Entwurfsentscheidungen für wartbaren PL/SQL-Code
- Abhängigkeiten verwalten und Fine-Grained Dependency Tracking
Collections und Bulk-Verarbeitung
- Assoziative Arrays, Nested Tables und VARRAYs im Vergleich
- BULK COLLECT mit LIMIT, FORALL mit SAVE EXCEPTIONS
- Fehlerbehandlung beim Bulk-Binding mit SQL%BULK_EXCEPTIONS
- Pipelined Table Functions
Dynamisches SQL und Standardpakete
- EXECUTE IMMEDIATE und DBMS_SQL im Vergleich
- Von Oracle mitgelieferte Pakete in der Anwendungsentwicklung
- DBMS_SCHEDULER, UTL_FILE, DBMS_LOB und DBMS_METADATA
- Native Compilation und konsequente Nutzung von Bind-Variablen
Trigger für Fortgeschrittene
- DML-, DDL- und Datenbank-Event-Trigger
- Compound Trigger und ihr Einsatzzweck
- Die Mutating-Table-Problematik erkennen und auflösen
Grosse Objekte und moderne Datentypen
- LOBs und SecureFile LOBs
- JSON-Daten in der Datenbank verarbeiten
- JSON Relational Duality Views aus PL/SQL heraus nutzen
- Der VECTOR-Typ, DBMS_VECTOR und DBMS_VECTOR_CHAIN, ONNX-Modelle laden
Performance-Analyse und Tuning
- Den PL/SQL-Compiler steuern: PLSQL_OPTIMIZE_LEVEL und Compiler-Warnungen
- Result Cache für SQL und PL/SQL
- Profiling und Tracing mit DBMS_PROFILER, DBMS_HPROF und PL/Scope
- Context Switches messen und reduzieren, PRAGMA UDF und WITH FUNCTION
Sicherheit in PL/SQL
- SQL-Injection verhindern: Bind-Variablen und DBMS_ASSERT
- Definer-Rights gegen Invoker-Rights (AUTHID)
- Schema-Privilegien statt Einzelberechtigungen
- SQL Firewall als zusätzliche Schutzschicht
Integration und Ausblick
- PL/SQL mit externen C- und Java-Routinen verbinden
- JavaScript Stored Procedures als Alternative zu PL/SQL
- Select AI und RAG-Muster aus PL/SQL heraus
- Vorbereitung auf die Prüfung 1Z0-149