Benutzer-Werkzeuge

Webseiten-Werkzeuge


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
Cookies helfen bei der Bereitstellung von Inhalten. Durch die Nutzung dieser Seiten erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Rechner gespeichert werden. Weitere Information
"Autor: Gunther Pipperr"
dba/oracle12c_plsql_in_sql.txt · Zuletzt geändert: 2014/11/22 18:37 von Gunther Pippèrr