======Oracle 12c Datenbank - PL/SQL in SQL Statements verwenden==== Ab 12c kann nun in einem SQL Statement direkt PL/SQL verwendet werden. Ein ein erstes Beispiel: with function iconvert(p_id number) return number is begin return p_id*2; end; select iconvert(2) from dual / ICONVERT(2) ----------- 4 ===ORA-32034: unsupported use of WITH clause=== Um aber das PL/SQL wiederum in einer geschachtelten SQL Abfrage zu verwenden muss der Hint **WITH_PLSQL** verwendet werden: select * from ( with function iconvert(p_id number) return number is begin return p_id*2; end; select iconvert(2) from dual ) / ERROR at line 2: ORA-32034: unsupported use of WITH clause **Lösung: Hint WITH_PLSQL** select /*+ WITH_PLSQL */ * from ( with function iconvert(p_id number) return number is begin return p_id*2; end; select iconvert(2) from dual ) / ICONVERT(2) ------------ 4 === Einsatz Möglichkeiten === Da das PL/SQL auch in einer View verwendet werden kann und "autonomous transaction" unterstützt ist hier ein Log Trigger auf SQL Abfragen umsetzbar. ==== Quellen ==== * DOAG 2014 - Konferenzvortrag