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