Benutzerdefinierte SELECT-Anweisungen
Sie können in MapForce benutzerdefinierte SQL SELECT-Anweisungen mit oder ohne Parameter erstellen. Diese Anweisungen werden in Form tabellenähnlicher Strukturen dargestellt, anhand derer Sie Daten auf andere Komponenten mappen können. So können Sie z.B. eine benutzerdefinierte Anweisung zum Verknüpfen von Tabellen mittels Join, zum Filtern Ihrer Datenbankdaten und Definieren von Parametern, die Werte aus anderen Komponenten im Mapping erhalten können, erstellen.
SQL SELECT-Anweisungen ohne Parameter werden in C++, C#, Java und Built-in unterstützt. SQL SELECT-Anweisungen mit Input-Parametern sind nur mit der Transformationssprache Built-In kompatibel.
Erstellen/Berarbeiten/Entfernen einer SELECT-Anweisung
Um eine SELECT-Anweisung zu einer Datenbankkomponente hinzuzufügen, gehen Sie vor, wie unten beschrieben.
1.Klicken Sie mit der rechten Maustaste auf die Titelleiste der Datenbankkomponente und wählen Sie im Kontextmenü den Befehl Datenbankobjekte hinzufügen/entfernen/bearbeiten. Alternativ dazu können Sie auch die Datenbankkomponente auswählen und anschließend den Menübefehl Komponente | Datenbankobjekte hinzufügen/entfernen/bearbeitenauswählen.
2.Wählen Sie im Dialogfeld Datenbankobjekte hinzufügen/entfernen/bearbeiten eine der folgenden Methoden:
oUm eine benutzerdefinierte SELECT-Anweisung einzugeben, klicken Sie auf die Schaltfläche SELECT-Anweisung hinzufügen/bearbeiten.
oUm eine SELECT-Anweisung für eine bestimmte Tabelle zu generieren, klicken Sie mit der rechten Maustaste auf die gewünschte Tabelle und wählen Sie im Kontextmenü den Befehl SELECT-Anweisung erzeugen und hinzufügen.... Nach Auswahl dieses Befehls können Sie die generierte Anweisung anschließend bearbeiten.
Um eine vorhandene SELECT-Anweisung zu bearbeiten, wählen Sie eine der folgenden Methoden:
•Klicken Sie mit der rechten Maustaste auf die SELECT-Anweisung in der Komponente und wählen Sie den Befehl SELECT-Anweisung bearbeiten.
•Klicken Sie mit der rechten Maustaste auf die Datenbankkomponente und wählen Sie im Kontextmenü den Befehl Datenbankobjekte hinzufügen/entfernen/bearbeiten. Doppelklicken Sie anschließend im Dialogfeld Datenbankobjekte hinzufügen/entfernen/bearbeiten auf die gewünschte SELECT-Anweisung.
•Wählen Sie im Dialogfeld Datenbankobjekte hinzufügen/entfernen/bearbeiten die gewünschte SELECT-Anweisung aus und klicken Sie auf SELECT-Anweisung hinzufügen/bearbeiten.
•Klicken Sie im Dialogfeld Datenbankobjekte hinzufügen/entfernen/bearbeiten mit der rechten Maustaste auf die gewünschte SELECT-Anweisung und wählen Sie SELECT-Anweisung bearbeiten.
Um eine SELECT-Anweisung zu entfernen, gehen Sie folgendermaßen vor:
1.Klicken Sie mit der rechten Maustaste auf die Datenbankkomponente und wählen Sie den Befehl Datenbankobjekte hinzufügen/entfernen/bearbeiten aus.
2.Klicken Sie mit der rechten Maustaste auf die zu löschende SELECT-Anweisung und wählen Sie im Kontextmenü den Befehl SELECT-Anweisung entfernen.
Wichtige Hinweise
Beachten Sie die folgenden Punkte:
•Alle berechneten Ausdrücke in der SELECT-Anweisung müssen einen eindeutigen Korrelationsnamen haben (wie z.B. SELECT *, (Quantity*UnitPrice) AS Price), um als mapbare Datenelemente zur Verfügung zu stehen.
•Wenn Sie über JDBC eine Verbindung zu einer Oracle- oder IBM DB2-Datenbank herstellen, darf die SELECT-Anweisung kein Semikolon am Ende aufweisen.
SQL SELECT-Anweisungen ohne Parameter
Im Beispiel unten sehen Sie, wie Sie mit benutzerdefinierten SELECT-Anweisungen ohne Parameter arbeiten. Im unten gezeigten Mapping werden Datenbankdaten auf eine Textdatei gemappt. Die Datenbank BookCatalog.sqlite hat eine Parent-Tabelle namens Authors und eine Child-Tabelle namens Books. In der Komponente wird jedoch nur die SELECT-Anweisung mit einer Baumstruktur angezeigt. Die Baumstruktur hängt von der SQL-Abfrage ab, die Sie im Dialogfeld SQL SELECT-Anweisung eingeben definiert haben. Da von den Tabellen Authors und Books nichts gemappt wird, fehlen diese Tabellen in der Komponente.
SELECT-Anweisung
Wir haben für die Datenbankkomponente die folgende SQL-Anweisung hinzugefügt (siehe Anleitung Erstellen/Berarbeiten/Entfernen einer SELECT-Anweisung):
Die SQL-Anweisung wählt alle Tabellen aus der Tabelle Authors aus und filtert die Datenbankdaten, sodass nur Autoren aus dem UK inkludiert werden. Sobald wir diese Anweisung zum Dialogfeld SQL SELECT-Anweisung eingeben hinzugefügt haben, steht die Anweisung im Dialogfeld Datenbankobjekte hinzufügen/entfernen/bearbeiten zur Verfügung (Abbildung unten). Die Anweisung wird auch in der Datenbankkomponente angezeigt (siehe Mapping oben). Die Anzahl der sichtbaren Zeilen der SELECT-Anweisung kann im Dialogfeld Optionen konfiguriert werden (Option Anzeige der Annotation einschränken auf).
Ausgabe
In der Ausgabe wird eine Liste kommagetrennter Werte angezeigt, die Autoren nur aus dem UK enthält (Codefragment unten).
Author,Country,Website
Bram Stoker,UK,www.bramstoker.org
Charles Dickens,UK,www.charlesdickensinfo.com
Emily Brontë,UK,n/a
James Herbert,UK,www.james-herbert.co.uk
Neil Gaiman,UK,www.neilgaiman.com
Terry Pratchett,UK,www.terrypratchettbooks.com
Agatha Christie,UK,www.agathachristie.com
Roald Dahl,UK,www.roalddahlfans.com
David Walliams,UK,www.worldofdavidwalliams.com
Kenneth Grahame,UK,n/a
Philip Pullman,UK,www.philip-pullman.com
J.K. Rowling,UK,www.jkrowling.com
Ann Cleeves,UK,www.anncleeves.com
SQL SELECT-Anweisungen mit Parametern
In unserem zweiten Beispiel wird ein Mapping gezeigt, in dem die Datenbankkomponente eine benutzerdefinierte SELECT-Anweisung mit einem Parameter hat (Abbildung unten).
SELECT-Anweisung
Wir haben für die Komponente BookCatalog die folgende SQL-Anweisung eingegeben:
In der Anweisung wird der Parameter Country verwendet. Dieser Parameter kann Werte aus der Konstante erhalten (unter der Komponente BookCatalog). Um Daten aus der SELECT-Anweisung mit dem Parameter mappen zu können, klicken Sie in der Datenbankkomponente auf die Schaltfläche neben dem Node SELECT_Statement (Mapping oben) und wählen Sie im Kontextmenü den Befehl Aufruf mit Parametern einfügen. Dadurch wird eine Aufrufkomponente mit Parametern eingefügt (mittlere Komponente im Mapping oben). Die Aufrufkomponente besteht aus zwei Teilen: Der linke Teil erhält einen Input-Parameter (in unserem Fall Country) und der rechte Teil repliziert die SELECT-Anweisung mit der Baumstruktur aus der Datenbankkomponente. Die gefilterten Daten werden anschließend auf die Textdatei Authors gemappt.
Ausgabe
In der Ausgabe werden nun nur Autoren aus den USA angezeigt (Codefragment unten).
Author,Country,Website
Stephen King,US,www.stephenking.com
Frank Herbert,US,n/a
Isaac Asimov,US,www.asimovonline.com
Blake Crouch,US,www.blakecrouch.com
Ray Bradbury,US,www.raybradbury.com
Joe Hill,US,www.joehillfiction.com
Josh Malerman,US,www.joshmalerman.com
George R. R. Martin,US,www.georgerrmartin.com
A. J. Finn,US,n/a
Dan Brown,US,www.danbrown.com
Dean Koontz,US,www.deankoontz.com
Beispieldateien
Nähere Informationen zu Mappings, in denen benutzerdefinierte SQL SELECT-Anweisungen als Input verwendet werden, finden Sie in den folgenden Beispielen im Ordner MapForceExamples:
•DB_EmployeeListByTitle.mfd
•DB_MostExpensiveArticle.mfd
•DB_ManagerList_AllOffices.mfd
•DB_ManagerList_SelectedDepartment.mfd
•DB_ManagerList_SelectedOffice.mfd