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
Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
dba/oracle12c_plsql_in_sql.txt · Zuletzt geändert: 2014/11/22 18:37 von gpipperr