Generieren von Schlüsseln mit Hilfe von gespeicherten Prozeduren

www.altova.com Dieses Kapitel drucken Vorherige Seite Eine Ebene nach oben Nächste Seite

Startseite >  Datenquellen und -ziele > Datenbanken und MapForce > Gespeicherte Prozeduren >

Generieren von Schlüsseln mit Hilfe von gespeicherten Prozeduren

In diesem Beispiel wird gezeigt, wie Sie einen durch eine gespeicherte Prozedur generierten Schlüssel (ID) mit Hilfe lokaler Beziehungen in eine andere Tabelle einfügen.

 

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 auf dem Register DB-Abfrage 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.uspAddProductModelEx
 @ModelName nvarchar(50)

 ,@Inst xml

 ,@ProductModelID int OUTPUT
AS

BEGIN
INSERT INTO [Production].[ProductModel]
          ([Name]
          ,[Instructions]
          ,[rowguid]
          ,[ModifiedDate])
    VALUES
          (@ModelName
          ,@Inst
          ,NEWID()
          ,GETDATE())
  SELECT @ProductModelID = SCOPE_IDENTITY()
END

 

Die obige gespeicherte Prozedur hat zwei Parameter (@ModelName, @Inst) als Input und führt an der Tabelle ProductModel eine INSERT-Operation durch. Anschließend gibt sie die generierte Produktmodell-ID @ProductModelID als Output-Parameter zurück. Die von der gespeicherten Prozedur zurückgegebene @ProductModelID soll in die Tabelle ProductModelIllustration eingefügt werden.

 

In der folgenden Anleitung wird beschrieben, wie Sie ein Mapping für die obige Anforderung erstellen.

 

1.Stellen Sie in MapForce eine Verbindung zur Datenbank "AdventureWorks" her, 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.Wenn Sie aufgefordert werden, Datenbankobjekte auszuwählen, wählen Sie die Tabelle ProductModelIllustration und die gespeicherte Prozedur uspAddProductModelEx aus.

mf_sp_26

3.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_27

4.Klicken Sie optional nochmals auf die Schaltfläche Kontextmenü anzeigen mf_ic_storedproc_menu, wählen Sie Prozedureinstellungen und aktivieren Sie anschließend das Kontrollkästchen Transaktionen verwenden, wenn die gespeicherte Prozedur innerhalb einer Transaktion ausgeführt werden soll. Durch Definieren der Transaktion für die gespeicherte Prozedur stellen Sie sicher, dass der Abruf des Schlüssels und das Einfügen des Datensatzes während derselben Transaktion erfolgen.
5.Klicken Sie mit der rechten Maustaste auf die Titelleiste der Datenbankkomponente und wählen Sie im Kontextmenü den Befehl Datenbankobjekte hinzufügen/entfernen/bearbeiten.
6.Klicken Sie auf Beziehungen hinzufügen/bearbeiten und anschließend auf Beziehung hinzufügen. Definieren Sie die Beziehungen, wie unten gezeigt.

mf_sp_28

7.Klicken Sie auf OK, um das Dialogfeld zu schließen. Beachten Sie, dass die Tabelle ProductModelIllustration nun als Child der gespeicherten Prozedur angezeigt wird. Der Output-Parameter (@ProductModelID) der gespeicherten Prozedur wird als Indikator angezeigt, dass er in der lokalen Beziehung verwendet wird. Er hat jedoch keine Input- oder Output-Konnektoren.

mf_sp_29

8.Der Parameter @Inst in diesem Beispiel hat den Typ XML. Klicken Sie mit der rechten Maustaste in der Komponente auf den Parameter @Inst und wählen Sie im Kontextmenü den Befehl XML-Schema Feld zuweisen. Wählen Sie als nächstes das Schema Production.ManuNstructionsSchemaCollection aus der Datenbank aus. Wenn Sie aufgefordert werden, ein Root-Element auszuwählen, übernehmen Sie den Standardwert unverändert und klicken Sie auf OK. Nähere Informationen zum Mappen von Daten auf XML-Datenbankfelder finden Sie unter Mappen von XML-Daten von/auf Datenbankfelder.

mf_sp_30

9.Fügen Sie die Quellkomponenten, aus denen 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_31

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_32

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 .

© 2019 Altova GmbH