Benutzer-Werkzeuge

Webseiten-Werkzeuge


dba:oracle12c_plsql_in_sql

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
dba:oracle12c_plsql_in_sql [2014/11/22 18:05] – angelegt gpipperrdba:oracle12c_plsql_in_sql [2014/11/22 18:37] (aktuell) – [ORA-32034: unsupported use of WITH clause] gpipperr
Zeile 22: Zeile 22:
  
  
 +===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:
 +<code sql>
 +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
 +
 +</code>
 +
 +**Lösung: Hint WITH_PLSQL**
 +
 +<code sql>
 +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
 +
 +</code> 
 +
 +
 +=== 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