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. Diese Website verwendet Cookies. Mit der Nutzung der Website erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Computer gespeichert werden. Außerdem bestätigen Sie, dass Sie unsere Datenschutzerklärung gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website. Weitere Information
"Autor: Gunther Pipperr"
dba/oracle12c_plsql_in_sql.txt · Zuletzt geändert: 2014/11/22 18:37 von gpipperr