Sonntag, April 16, 2023

if (not) exists für DDL in Oracle 23c

Noch ein nützliches Detail, das es in Oracle 23c geschafft hat - und das bei anderen RDBMS schon länger im Spiel war: die Möglichkeit, Fehler in SQL Skripten zu vermeiden, die sich aus der Existenz oder Nicht-Existenz von Objekten ergeben:

  • create ... if not exists
  • drop ... if exists
Bisher benötigte man in solchen Fällen eine relativ aufwändige Prüfung, die man sich nun sparen kann. Natürlich birgt das auch ein gewisses Risiko, da man damit natürlich wunderbar produktive Objekte beseitigen kann, aber bei DDL sollte man ohnehin immer vorsichtig sein. Eine detaillierte Erläuterung liefert - natürlich - Tim Hall: https://oracle-base.com/articles/23c/if-not-exists-ddl-clause-23c.

Mittwoch, April 12, 2023

Group By Erweiterung in Oracle 23c

Nein, ich schreibe hier nichts mehr, aber eben habe ich eine interne SQL Schulung gehalten und darin behauptet, dass Oracle eine Positionsangabe im group by nicht unterstützt:

cdb$root@SYS:some-system > select username, count(*) from v$session group by 1;
select username, count(*) from v$session group by 1
       *
FEHLER in Zeile 1:
ORA-00979: Kein GROUP BY-Ausdruck

Mit Oracle 23c ändert sich das offenbar, wie Dani Schnider in https://danischnider.wordpress.com/2023/04/07/group-by-extensions-in-oracle-23c/ erläutert. Natürlich spendiert Oracle dafür auch noch einen Parameter group_by_position_enabled, den man auf true setzen muss, wenn man das Feature auch noch nutzen möchte.