Gewusst wie: Erstellen einer dynamische Abfrage in Oracle

June 15

Oracle, das Objekt-relationales Datenbank-Management Programm, vorausgesetzt durch die Oracle Corporation, können Sie SQL-Anweisungen zu verwenden, um zu speichern, zu verwalten, Daten abrufen und anzeigen. Abfragen können den Benutzer für die Kommunikation mit der Datenbank, SQL-Befehle auszuführen. Eine dynamische SQL-Abfrage bietet eine breite Palette von Funktionen als einer Standardabfrage. Dynamische Abfragen können Sie während der Laufzeit, z. B. beim Betrieb mit einer Tabelle, die Sie den Namen der bis dahin nicht wissen, SQL-Befehle ausführen.

Anweisungen

1 Öffnen Sie Oracle zu, und klicken Sie auf das Symbol, um das SQL-Workshop-Tool öffnen.

2 Schreiben Sie in die SQL-Anweisungen zum Erstellen von Objekten und Tabellentypen. Sie können diese als eine Art Vorlage für andere Tabellen in der Datenbank. Die Macht hinter der dynamischen SQL-Anweisungen ist, kann die Tabelle zu erstellen und während der Laufzeit Abfragen.

"CREATE TYPE T_students AS OBJECT (StudentId Anzahl, Full_name VARCHAR2(30))

/

CREATE TYPE T_studentlist AS-Tabelle der t_student

/"

In den oben genannten Anweisungen erstellt Sie eine Datenbank namens "T_students", die "StudentId" und "Full_name" Werte als eindeutige Bezeichner (eine Möglichkeit zur Identifizierung eines einzelnen Datensatzes in einer Datenbank) verwendet wird. Der Wert "StudentId" werden eine Variable "Anzahl", was bedeutet, dass nur Zahlen in das Feld "StudentId" speichert. Der Wert "Full_name" kann nur bis zu 30 Buchstaben enthalten. Schließlich entstand ein Tabellentyp ("T_studentlist") innerhalb der Datenbank "T_student". Ändern Sie diese Werte, um besser den Typ der Daten darzustellen, die Sie in Ihrer Oracle-Datenbank.

3 Schreiben Sie die SQL-Anweisungen zum Erstellen der eigentlichen Tabellen in der Datenbank. Die Tabelle leiht die Struktur der Typen, die Sie in Schritt 2 erstellt, damit Sie nicht wieder die Bezeichner angegeben. Bei dem gleichen Beispiel wird SQL zum Erstellen der Tabellen wie folgt aussehen:

"CREATE TABLE Students_new (StudentId Anzahl, Studenten-T__studentlist)

NESTED TABLE students STORE AS student_table;"

Die Tabelle "Students_new" wird anhand des Feldes "StudentId" der Tabelle "Studenten" und "T_studentlist" verbinden. Jeder Schüler in der Tabelle haben eine eindeutige Nummer, die Informationen über die Schüler in den einzelnen Tabellen verbindet. Auf diese Weise müssen Sie nicht sich wiederholende Daten in den Tabellen. Beispielsweise haben Sie in einer Schüler-Datenbank, eine Tabelle, die die Schüler-Kontaktinformationen (Name, Telefonnummer und Postanschrift) enthält und eine andere Tabelle, die aktuellen Termine des Schülers enthält. Das einzige Feld, das in beiden Tabellen gleich sein wird ist das "StudentId"-Feld, das die Informationen verbindet. Feld "StudentId" können Sie eine Abfrage schreiben, die des Schülers Namen und Telefon Nummer von die Student-Kontaktinformationen und des Schülers Zeitplaninformationen aus der Zeitplan-Tabelle abruft.

4 Schreiben Sie eine SQL-Abfrage die Tabellen Informationen hinzuzufügen. Deklarieren Sie zwei Variablen, die diese Informationen aus der Tabelle in die dynamische Abfrage verwendet werden, später ziehen werden.

"INSERT INTO Students_new Werte)

10,

t_studentlist(

t_students(1, 'John Doe'),

t_students(2, 'Jane Smith')));

DEKLARIEREN

majorId NUMBER;

sname VARCHAR1(20);"

Zwei Studenten wurden in der Tabelle hinzugefügt. John Doe hat eine Student ID "1" und Jane Smith hat eine Studenten-ID "2." Alle durch die Datenbank haben John Doe Informationen die ID "1".

5 Führen Sie die Abfrage. Dieser Teil wird die dynamische SQL hinzufügen. Einer der Tabellen-Namen ist nicht bekannt, zu der Zeit, die Sie die Abfrage code, aber es wird während der Laufzeit verfügbar. Erstellen Sie stattdessen einen temporären Platzhalter.

"BEGIN

EXECUTE IMMEDIATE 'SELECT s.studentId, s.fullname

FROM students_new s, TABLE (s.students) s

WHERE s.studentId = 1'

INTO majorId, sname;

ENDE;

/"

In der dynamischen Abfrage, Sie nehmen Informationen aus der Tabelle "Students_new" und dessen Umsetzung in die "MajorId" und "Sname" Felder einer Tabelle, die zu diesem Zeitpunkt nicht bekannt (s (s.students)). Sie abgefragt die Datenbank Informationen über ein Student mit einer ID von "1". Bei Verwendung des Beispiels ist John Doe der Schüler aus der Schüler-Tabelle ausgewählt und der Unbekannte Tabelle hinzugefügt.

6 Drücken Sie die Taste "F9" auf Ihrer Tastatur, um die Abfrage auszuführen und zu testen.

Tipps & Warnungen

  • Trennen Sie SQL-Anweisungen über mehrere verschiedene Zeilen, so dass den Code leicht zu lesen und später zu verweisen.
  • SQL-Anweisungen Groß-/Kleinschreibung.