dba:oracle12c_plsql_in_sql
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
dba/oracle12c_plsql_in_sql.txt · Zuletzt geändert: 2014/11/22 18:37 von gpipperr