Altova MapForce 2024 Professional Edition

In diesem Beispiel wird gezeigt, wie Sie eine Prozedur aufrufen, die Input-Parameter hat und eine Datenbank aktualisiert. Bei dieser Art des Prozeduraufrufs können Transaktionen durchgeführt und die Aktion im Fall eines Fehlers mittels Rollback rückgängig gemacht werden. Oder Sie können eine benutzerdefinierte SQL-Anweisung hinzufügen, die vor dem Aufruf der Prozedur ausgeführt wird. In diesem Szenario wird vorausgesetzt, dass die gespeicherte Prozedur wie eine Zielkomponente in MapForce fungiert und Sie nicht an deren Ergebnis interessiert sind. Ein Beispiel, in dem gezeigt wird, wie Parameter übergeben und von einer gespeicherten Prozedur zurückgegebene Daten gemappt werden, finden Sie unter Gespeicherte Prozeduren mit Input und Output.

 

Erstellen wir zuerst die gespeicherte Demo-Prozedur in der Datenbank "AdventureWorks". Führen Sie zu diesem Zweck das unten stehende Skript an der Datenbank aus. Sie können dies entweder von einem Abfragefenster von Microsoft SQL Server Management Studio aus oder direkt im DB-Abfrage-Fenster von MapForce (siehe Anzeigen und Abfragen von Datenbanken) tun. Vergewissern Sie sich in jedem Fall, dass Ihr Datenbankbenutzerkonto Rechte zum Erstellen von gespeicherten Prozeduren hat.

 

CREATE PROCEDURE Production.uspAddProductModel
  @ModelName nvarchar(50)
  ,@Inst xml
AS
BEGIN
INSERT INTO [Production].[ProductModel]
          ([Name]          
          ,[Instructions]
          ,[rowguid]
          ,[ModifiedDate])
    VALUES
          (@ModelName          
          ,@Inst
          ,NEWID()
          ,GETDATE())
END

 

Die obige gespeicherte Prozedur hat zwei Parameter (@ModelName, @Inst) als Input und fügt die entsprechenden Werte zusammen mit einigen datenbankgenerierten Daten in die Tabelle ProductModel der Datenbank "AdventureWorks" ein.

 

In den folgenden Schritten wird gezeigt, wie Sie ein Mapping erstellen, in dem von dieser Prozedur zurückgegebene Daten verarbeitet werden.

 

1.Stellen Sie in MapForce eine Verbindung zur Datenbank "AdventureWorks" her und fügen Sie die gespeicherte Prozedur zum Mapping hinzu, wie unter Hinzufügen von gespeicherten Prozeduren zum Mapping beschrieben. Vergewissern Sie sich, dass Ihr Datenbankbenutzerkonto Rechte zum Anzeigen und Ausführen von gespeicherten Prozeduren hat.

2.Klicken Sie neben der gespeicherten Prozedur auf die Schaltfläche Kontextmenü anzeigen mf_ic_storedproc_menu und wählen Sie den Befehl Nodes als Ziel anzeigen. Die gespeicherte Prozedur wird nun als Zielkomponente im Mapping angezeigt, wobei auf der linken Seite die Input-Parameter aufgelistet sind.

mf_sp_15

3.Klicken Sie nochmals auf die Schaltfläche Kontextmenü anzeigen  und wählen Sie Prozedureinstellungen. Mit diesem optionalen Schritt können Sie die gespeicherte Prozedur innerhalb einer mit Rollback rückgängig machbaren Transaktion ausführen. Sie können auch eine benutzerdefinierte SQL-Anweisung hinzufügen, die vor dem Aufruf der Prozedur ausgeführt werden soll.

4.Aktivieren Sie das Kontrollkästchen Transaktionen verwenden.

mf_sp_16
Anmerkung:In diesem Beispiel ist die Datenbankablaufverfolgung auf Ebene der Datenbankkomponente deaktiviert. Es findet keine Ablaufverfolgung statt. Sie können die Datenbankablaufverfolgung jedoch bei Bedarf aktivieren.

 

5.Fügen Sie die Quellkomponente, aus der die Daten, die in die Datenbank eingefügt werden sollen, stammen, hinzu. In diesem Beispiel werden die Quelldaten durch Konstanten bereitgestellt, es kann jedoch als Input auch jede andere von MapForce unterstützte Quellkomponente verwendet werden. Nähere Informationen zu Konstanten finden Sie unter Hinzufügen einer Konstante zum Mapping.

mf_sp_17

Da mit diesem Mapping eine Datenbank aktualisiert wird, können Sie die Vorschau auf die Ausgabe nicht wie in anderen Mappings direkt anzeigen. Klicken Sie stattdessen auf die Schaltfläche Ausgabe, um die Pseudo-SQL-Anweisung mit Angaben, wie die Datenbank bearbeitet wird, anzuzeigen. Wenn Sie Transaktionen aktiviert haben, werden diese, wie in den Kommentaren angegeben, ausgeführt.

mf_sp_18

In der im Fenster Ausgabe angezeigten Pseudo-SQL-Anweisung werden die eigentlichen Transaktionsbefehle nicht angezeigt. Es werden stattdessen nur Hinweise (in Form von Kommentaren) angezeigt. Die eigentlichen SQL-Befehle werden jedoch an die zugrunde liegende Datenbank-API gesendet.

 

Um das Mapping an der Datenbank auszuführen, wählen Sie eine der folgenden Methoden:

 

Klicken Sie im Menü Ausgabe auf SQL-Script ausführen.

Klicken Sie in der Symbolleiste auf die Schaltfläche SQL-Script ausführen mf_ic_run-sql .

 

Gespeicherte Prozeduren und duplizierte Inputs

Wenn Sie Daten aus mehreren Quellen im Mapping auf dieselbe gespeicherte Prozedur mappen müssen, können Sie die gespeicherte Prozedur duplizieren, sodass sie mehrere Inputs akzeptiert. Klicken Sie dazu mit der rechten Maustaste in der Komponente auf den Eintrag für die gespeicherte Prozedur und wählen Sie im Kontextmenü den Befehl Duplikat einfügen, siehe auch Input duplizieren. Bei Ausführung des Mappings werden solche duplizierten gespeicherten Prozeduren einmal für jeden duplizierten Input aufgerufen.

 

Beachten Sie, dass der Befehl Duplikat einfügen für die Parameter der gespeicherten Prozedur deaktiviert ist, da jeder Parameter ein atomarer Wert ist (und daher auch auf Null gesetzt werden könnte).

 

Ablaufverfolgung auf Ebene von gespeicherten Prozeduren

Um die Ablaufverfolgung auf Ebene von gespeicherten Prozeduren zu aktivieren, gehen Sie folgendermaßen vor:

 

1.Stellen Sie sicher, dass auf Ebene der Datenbankkomponente als Ablaufverfolgungsebene entweder Immer oder Fehler ausgewählt ist (siehe oben).

2.Wenn es sich um eine gespeicherte Prozedur handelt, klicken Sie auf die Schaltfläche Kontextmenü anzeigen mf_ic_storedproc_menu und wählen Sie anschließend im Kontextmenü den Befehl Prozedureinstellungen aus.

3.Wählen Sie die Ablaufverfolgungsebene aus. Bei Auswahl der Option Komponenteneinstellungen verwenden werden die auf Komponentenebene definierten Einstellungen übernommen. Mit der Option Auf Fehler einschränken wird die Ablaufverfolgung auf Fehlerereignisse eingeschränkt. Mit Immer deaktiviert wird für diese Tabelle oder gespeicherte Prozedur keine Ablaufverfolgung durchgeführt.

 

© 2017-2023 Altova GmbH