| Dynamisches SQL mit EXECUTE IMMEDIATE |
|
|
| Mittwoch, 21. Januar 2009 um 14:27 | ||||
|
Bisher waren wir in unseren PL/SQL Programmen auf statisches SQL angewiesen. Eine gewisse Dynamik brachte der Cursor, der mit Hilfe von Parametern die SELECT Anweisung innerhalb bestimmter Grenzen anpassen konnte. Aber auch das ist unbefriedigend. Und spätestens, wenn Sie ein DDL-Kommando innerhalb von PL/SQL ausführen wollen, sind wir komplett hilflos. Gründe für den Einsatz von dynamischem SQL gibt es viele: Vielleicht steht der Name der Tabelle, aus der selektiert werden soll, erst zur Laufzeit fest, oder mehr noch, der Name der Tabelle soll als Argument beim Aufruf einer Prozedur übergeben werden. Dynamisches SQL kann benutzt werden, um alle meine Tabellen zu löschen. Besitze ich 50 Tabellen und will diese loswerden, tippe ich nicht 50mal drop table ein, sondern schreibe mir einen PL/SQL-Block, der das für mich übernimmt. Dynamisch. Eigentlich müßte der Artikel "Dynamische Programmierung" heißen, denn es ist nicht nur dynamisches SQL, sondern auch dynamisches PL/SQL möglich. Früher hat man dynamisches SQL ausschliesslich über das Package DBMS_SQL realisieren können, heute ist es einfacher denn je: EXECUTE IMMEDIATE. Sie müssen sich registrieren, um den Artikel zu lesen
|
||||
| Aktualisiert ( Freitag, 08. Oktober 2010 um 21:31 ) | ||||


Kommentare
hmmm, ich kann mich nicht mehr recht erinnern, was ich da sagen wollte. Ich denke, folgendes ist wichtig: Zuguterletzt muss man dem Aufrufer wohl klarmachen, dass er Zeichenketten inklusive Hochkomma übergeben muss. Also z.B.
exec del_employee ('''SCOTT''')
Häßlich… Zitieren
Sind einige Wörter verschwunden beim 3. Nachteil ("… implementiert man mögliche Sicherheitslück en. Und zuguterletzt …")?
Tschüß,
Piet Zitieren
Alle Kommentare dieses Beitrages als RSS-Feed.