Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Einführung in natives dynamisches SQL in der Oracle-Datenbank

Natives dynamisches SQL

Bevor Sie mit dem Erlernen von nativem dynamischem SQL beginnen, ist ein kurzer Hintergrund wichtig. Oracle machte allen Entwicklern im Mai 1994 ein Mittsommergeschenk, indem es das Dynamic SQL-Konzept in seiner Datenbankversion 7.1 (alias Oracle 7.1) einführte. Damit ermöglicht es Entwicklern, dynamisches SQL über das Paket „DBMS_SQL“ zu schreiben.

Aber nach und nach verlor die DBMS_SQL-Bibliothek ihren Charme. Wegen seiner „nicht so einfachen“ Syntax, der „schleppenden Leistung“ und „nicht unterstützten benutzerdefinierten Typen“. All diese Mängel erforderten etwas anderes. Das könnte den Entwicklern helfen, einen gut optimierten Code zu schreiben, ohne sie übermäßig zu belasten.

Oracle ließ sich Zeit, fast fünf Jahre. Schließlich wurde mit der Einführung von Oracle Database 8i oder genauer gesagt Oracle Database Version 8.1.5 im Februar 1999 eine verbesserte Version von Dynamic SQL veröffentlicht. Aufgrund ihrer stabilen Natur wurde diese verbesserte Version von Dynamic SQL zum nativen Bestandteil von PL/ SQL-Sprache und erhielt ihren Namen „Native Dynamic SQL“, unter dem sie heute bekannt ist. Das ist eine kurze Einführung in die Genese des nativen dynamischen SQL in Oracle Database.

Um das native dynamische SQL zu verstehen, müssen wir zuerst verstehen, was statisches SQL in Oracle Database ist?

Was ist Static SQL?

Wie der Name schon sagt, wird jedes SQL-Statement, das sich während der Laufzeit nicht ändert, als statisches SQL-Statement bezeichnet.

Der Vorteil von Static SQL-Anweisungen besteht darin, dass wir bereits wissen, ob alle abhängigen Objekte, über die wir die Anweisung schreiben, vorhanden sind oder nicht. Ein weiterer Vorteil von Static SQL-Anweisungen besteht darin, dass wir sie fest in unsere Anwendung codieren. So können wir sie auf optimale Leistung abstimmen.

Nachdem wir nun gelernt haben, was statisches SQL ist, sehen wir uns an, was dynamisches SQL ist?

Was ist natives dynamisches SQL?

Wie der Name schon sagt, wird jede SQL-Anweisung, die zur Laufzeit erstellt wird, als dynamisches SQL bezeichnet . Diese Anweisungen werden spontan erstellt. Daher können sie nicht fest in die Anwendung codiert werden. Dies wiederum erhöht ihre Flexibilität.

Einerseits können Sie mit statischem SQL nur DML-Anweisungen innerhalb Ihres PL/SQL-Blocks ausführen. Andererseits ermöglicht Ihnen das dynamische SQL, DDL-Anweisungen auszuführen, und das auch innerhalb Ihres PL/SQL-Blocks. Durch die Verwendung von Dynamic SQL können Sie also eine Tabelle erstellen oder einen Index löschen oder Ihre Tabelle direkt in Ihrem PL/SQL-Block abschneiden. Dies ist ein Vorteil von Native Dynamic SQL gegenüber statischem SQL.

Was ist natives dynamisches PL/SQL?

Ähnlich wie bei dynamischem SQL wird der Prozess der Erstellung von PL/SQL-Code zur Laufzeit als dynamisches PL/SQL bezeichnet.

Werfen wir nun einen Blick auf die Vorteile von Native Dynamic SQL gegenüber dem DBMS_SQL-Paket in Oracle Database.

Vorteile von Native Dynamic SQL

  • Einfach zu verwendende Codes: Im Vergleich zum DBMS_SQL-Paket ist das native dynamische SQL viel einfacher zu verwenden. Dies liegt hauptsächlich daran, dass es in das SQL selbst integriert ist. Dies entspricht der Verwendung von Static SQL innerhalb eines PL/SQL-Codes. Außerdem ist nativer dynamischer SQL-Code kompakter und lesbarer als das DBMS_SQL-Paket. Letzteres erfordert aufgrund streng sequentieller Verfahren eine große Menge an Codes. Das macht es komplexer.
  • Verbesserung der Leistung des Kodex: Es gibt eine integrierte Unterstützung für natives dynamisches SQL im PL/SQL-Interpreter. Daher sind die Programme, die es verwenden, effizienter als diejenigen, die das DBMS_SQL-Paket verwenden. Grundsätzlich kombiniert natives dynamisches SQL die Schritte Vorbereitung, Bindung und Ausführung in einer Operation. Dies reduziert den Overhead für Prozeduraufrufe und das Kopieren von Daten, was wiederum die Leistung verbessert.
  • Unterstützung für benutzerdefinierte Typen: Im Gegensatz zum DBMS_SQL-Paket unterstützt das native dynamische SQL alle Arten von benutzerdefinierten Typen. Zum Beispiel benutzerdefinierte Objekte, REFs &Sammlungen.
  • Unterstützung für das Abrufen von Datensätzen: Die Zeilen, die das Ergebnis einer Abfrage sind, können mithilfe von nativem dynamischem SQL direkt in PL/SQL-Datensätze abgerufen werden. Dies ist mit dem DBMS_SQL-Paket nicht möglich.

Was sind die Funktionen von Dynamic SQL in Oracle Database?

  1. Erstens Dynamic DDL &DML mit der Verwendung einer beliebigen Bind-Variablen.
  2. Zweitens, dynamisches DQL und
  3. Drittens dynamisches DML, das eine bekannte Liste von Bind-Variablen verwendet

Dies sind die drei Funktionalitäten, die Dynamic SQL Ihrer PL/SQL-Programmierung hinzufügt.

Also, wie verwenden wir dynamisches SQL in Oracle Database?

Die beiden gängigsten Methoden zur Verwendung von dynamischem SQL und PL/SQL in Oracle Database sind:

  1. Sofortige Anweisung ausführen und
  2. Open-For, Fetch &Close-Block.

Die Execute Immediate-Anweisung wird verwendet, wenn die Abfrage einzelne Zeilendaten zurückgibt. Falls die Abfrage mehrzeilige Daten zurückgibt, können Sie die Hilfe von Open-For, Fetch und Close Block verwenden. In den kommenden Tutorials werden wir mehr über Execute Immediate und Open-for, fetch und close Block erfahren.

Gibt es andere Möglichkeiten, Dynamic SQL in Oracle Database zu verwenden?

Abgesehen von den oben erwähnten am häufigsten verwendeten Methoden sind die anderen Möglichkeiten, dynamisches SQL oder PL/SQL zu verwenden,

  • Mit Massenabruf
  • Zweitens mit Bulk Execute Immediate
  • Zusammen mit Bulk FORALL und
  • Zuletzt mit Bulk Collect Into-Anweisung

Wir haben alle oben genannten Befehle und Anweisungen in der vorherigen Serie zur Massendatenverarbeitung gelernt.

Wenn Sie gerne durch Video-Tutorials lernen, probieren Sie es aus.

Das ist eine ausführliche Einführung in Native Dynamic SQL in Oracle Database. Ich hoffe, Sie hatten Spaß beim Lesen. Stellen Sie sicher, dass Sie den Link dieses Blogs teilen mit deinen Freunden in deinen sozialen Medien. Achten Sie auch darauf, den YouTube-Kanal zu abonnieren, um dieser Serie zu folgen und etwas Neues und Interessantes zu erfahren.

Vielen Dank und einen schönen Tag!