Zum Inhalt springen

Datenbankfunktionen in Jitterbit Studio

Datenbankfunktionen ermöglichen den Zugriff auf grundlegende Datenbankinteraktionen.

CacheLookup

Deklaration

string CacheLookup(string databaseId, string sql)

Syntax

CacheLookup(<databaseId>, <sql>)

Erforderliche Parameter

  • databaseId: Ein String-Referenzpfad zu einer Datenbankverbindung im aktuellen Projekt
  • sql: Der SQL-Befehl, der für die Datenbank ausgeführt werden soll

Beschreibung

Diese Funktion ist identisch mit DBLookup, mit dem Unterschied, dass die erste Suche die Informationen zwischenspeichert und nachfolgende Suchen diesen Cache verwenden, anstatt die Datenbank wiederholt abzufragen. Der Cache ist für die Dauer der Operationskette gültig, in der er aufgerufen wird.

Wenn die in sql angegebene Abfrage keine Zeilen zurückgibt, gibt die Funktion null zurück.

Die globale Jitterbit-Variable $jitterbit.scripting.db.rows_affected wird von dieser Methode nicht gesetzt.

Die in diesem Funktionsaufruf verwendete Datenbank muss als Datenbankverbindung im aktuellen Projekt definiert sein. Weitere Informationen finden Sie in den Anweisungen zum Einfügen von Endpunkten im Abschnitt Endpunkte in Jitterbit Script.

Eine Alternative zum Zwischenspeichern ist die Verwendung der Funktionen Set und Get.

Hinweis

Mit dieser Funktion erstellte Endpunkte sind in der Endpunktnutzungsberichterstellung enthalten und werden auf Ihre Lizenz angerechnet.

Beispiele

// Looking up in a database using a SQL string
CacheLookup("<TAG>endpoint:database/My Database</TAG>",
    "SELECT ORDER_TYPE FROM PO_HEADER WHERE PO_NUMBER=1");

CallStoredProcedure

Deklaration

type CallStoredProcedure(string databaseId, string spName, type resultSet[, string inputOutputVariable,...])

Syntax

CallStoredProcedure(<databaseId>, <spName>, <resultSet>[, <inputOutputVariable>,...])

Erforderliche Parameter

  • databaseId: Ein String-Referenzpfad zu einer Datenbankverbindung im aktuellen Projekt
  • spName: Die gespeicherte Prozedur, die auf dem Datenbankserver ausgeführt werden soll
  • resultSet: Eine globale Variable zum Speichern des vom Datenbankserver zurückgegebenen Resultsets, falls zutreffend. (Siehe Hinweise unten).

Optionale Parameter

  • inputOutputVariable: Ein Ein- oder Ausgabeparameter, der an die gespeicherte Prozedur übergeben werden soll; diese Parameter werden je nach Signatur der gespeicherten Prozedur hinzugefügt

Beschreibung

Ruft die gespeicherte Prozedur spName mit den Verbindungsinformationen auf, die durch die Datenbankverbindung angegeben werden, die durch databaseId identifiziert wird.

Falls zutreffend, ist das zurückgegebene resultSet ein zweidimensionales Array von Strings. Wenn die gespeicherte Prozedur kein resultSet zurückgibt oder wenn ein ODBC-Treiber verwendet wird, wird dieses Argument ignoriert.

Verwenden Sie für Anwendungsfälle, die nicht von der Funktion CallStoredProcedure abgedeckt werden, stattdessen die Funktion DBExecute.

Hinweis

Bei Microsoft SQL Server-Datenbanken ruft diese Funktion gespeicherte Prozeduren nur im Standard-Datenbankbesitzer (dbo)-Schema auf. Um gespeicherte Prozeduren in anderen Schemas aufzurufen, verwenden Sie die Funktion DBExecute.

Vorsicht

Der Parameter resultSet wird derzeit nur von JDBC-Datenbanktreibern unterstützt. Bei Verwendung von ODBC gibt resultSet immer null zurück.

Die verbleibenden optionalen Parameter werden verwendet, um Ein- und Ausgabeargumente an die gespeicherte Prozedur zu übergeben. Die Anzahl der erforderlichen Argumente hängt von der Signatur der gespeicherten Prozedur ab.

Eingabeargumente können ein hartcodierter Wert, der Wert einer Quelle oder der Wert einer Berechnung oder Formel sein. Ausgabeargumente (einschließlich resultSet) werden als Referenz als "$name" angegeben, wobei "name" der Name der globalen Variablen ist, die den Ausgabewert enthält. Der Rückgabewert und der Typ der Funktion entsprechen dem Rückgabewert und dem Typ der gespeicherten Prozedur.

Die in diesem Funktionsaufruf verwendete Datenbank muss im aktuellen Projekt als Datenbankverbindung definiert sein. Weitere Informationen finden Sie in den Anweisungen zum Einfügen von Endpunkten im Abschnitt Endpoints in Jitterbit Script.

Informationen zur Fehlerbehebung finden Sie unter CallStoredProcedure: resultSet ist bei ODBC-Treibern immer null und CallStoredProcedure: „Gespeicherte Prozedur oder Funktion konnte nicht gefunden werden" bei PostgreSQL JDBC im Leitfaden zur Fehlerbehebung bei Vorgängen.

Hinweis

Mit dieser Funktion erstellte Endpunkte sind in der Endpunkt-Nutzungsberichterstellung enthalten und werden auf Ihre Lizenz angerechnet.

Beispiele

Beispiel 1: Aufrufen einer gespeicherten Prozedur ohne Ergebnismenge

// Calls a stored procedure "MyStoredProcedure",
// which takes one input variable, one output
// variable, and ignores the result set.
// "Input" is the name of the source global
// variable that provides the input and
// "output" is the name of the global variable
// used to store the output:
CallStoredProcedure("<TAG>endpoint:database/My Oracle Database</TAG>",
    "MyStoredProcedure", 0, Input, $output);

// The value of the output parameter can be
// accessed by either $output or Get("output")

Beispiel 2: Aufrufen einer gespeicherten Prozedur mit einer Ergebnismenge

// Calls a stored procedure "GetValues", which
// takes two input variables and returns a
// result set.
// The result set is returned as the
// two-dimensional array $result.
// The result can be accessed by using either
// $result or Get("result"):
CallStoredProcedure("<TAG>endpoint:database/My Oracle Database</TAG>",
    "GetValues", $result, Input1, Input2);

Beispiel 3: Aufrufen einer gespeicherten Prozedur, die auf einen Oracle-Objekttyp zugreift

Verwenden von Oracle-Objekt- und Datensatztypen

Jitterbit unterstützt Oracle-Objekttypen für die Arbeit mit Oracle-Datenbanken bei Verwendung des Oracle-JDBC-Treibers. Oracle-Objekttypen ähneln Oracle-Datensatztypen, die in Jitterbit nicht unterstützt werden, da Oracle diese nicht unterstützt.

Warnung

Um Oracle-Objekttypen zu verwenden, müssen Sie den Oracle-JDBC-Treiber verwenden. Der Oracle-ODBC-Treiber unterstützt weder Oracle-Objekttypen noch Oracle-Datensatztypen.

Um auf Oracle-Datensatztypen mit dem Oracle-JDBC-Treiber zuzugreifen, können Sie eine „Wrapper"-gespeicherte Prozedur in Ihrer Oracle-Datenbank erstellen, die auf einen Oracle-Datensatztyp zugreifen und diesen konvertieren kann. Verwenden Sie dann die Funktion CallStoredProcedure in Jitterbit, um die Wrapper-Prozedur aufzurufen und die Konvertierung zu und von einem Oracle-Objekttyp durchzuführen.

Tipp

Weitere Informationen zu den Unterschieden zwischen Oracle-Datensatztypen und Oracle-Objekttypen finden Sie in der Oracle-Dokumentation. Weitere Informationen finden Sie unter Record Variable Declaration und Using PL/SQL With Object Types in der Oracle-Datenbankdokumentation Release 18.

Das folgende Beispiel beschreibt, wie Sie Oracle-Objekte auf vereinfachte Weise in einer Funktion CallStoredProcedure verwenden können.

Oracle-Typdefinitionen

Eine Oracle-Objekttypdefinition folgt diesem Muster:

Oracle Object Type (Supported)
CREATE OR REPLACE TYPE example_customer_details AS OBJECT
(status NUMBER
,party_id NUMBER
,account_id VARCHAR
);

Eine Oracle-Datensatztypdefinition folgt diesem Muster:

Oracle Record Type (Not Supported)
CREATE TYPE example_customer_details IS RECORD
(status NUMBER
,party_id NUMBER
,account_id VARCHAR
);
Beispielschritte

Schritt 1: Erstellen des Objekts Um Oracle-Objekttypen zu verwenden, erstellen Sie zunächst das Objekt in der Oracle-Datenbank:

Create Object
CREATE OR REPLACE TYPE example_customer_details AS OBJECT
(status                    NUMBER
,party_id                  NUMBER
,account_id                VARCHAR
);

Schritt 2: Paket erstellen Erstellen Sie anschließend das Paket als Funktion in der Oracle-Datenbank:

Paket erstellen
CREATE OR REPLACE PACKAGE example AS
  FUNCTION processcustomer(custin IN example_customer_details, new_account_number IN VARCHAR) RETURN example_customer_details;
END example;

Schritt 3: Pakettext erstellen Erstellen Sie anschließend den Pakettext als Funktion in der Oracle-Datenbank:

Pakettext erstellen
CREATE OR REPLACE PACKAGE BODY example AS
FUNCTION processcustomer(custin IN example_customer_details, new_account_number IN varchar) RETURN example_customer_details
  IS
  custout example_customer_details;
  BEGIN
     custout := example_customer_details(
     custin.status + 1,
     custin.party_id,
     new_account_number
     );
     return custout;
END;
END example;

Schritt 4: Gespeicherte Prozedur in Jitterbit aufrufen Jetzt können Sie die gespeicherte Prozedur processcustomer aus Jitterbit mit der Funktion CallStoredProcedure aufrufen. Dieses Beispielskript zeigt, wie man ein Objekt an die Funktion CallStoredProcedure übergibt. Sie können Objekte aus einer gespeicherten Prozedur auf ähnliche Weise als Rückgabe- oder Ausgabeparameter übergeben.

Jitterbit-Skript erstellen
<trans>
$cust = dict();
$cust["status"] = 1;
$cust["party_id"] = 10;
$cust["account_id"] = "2341";
db = "<TAG>endpoint:database/My Oracle Database</TAG>";
$custout = CallStoredProcedure(db, "EXAMPLE.PROCESSCUSTOMER", "", $cust, "NA0233");
r = "Status: " + $custout["STATUS"] +
" Party ID: " + $custout["PARTY_ID"] +
" Account ID: " + $custout["ACCOUNT_ID"];
WriteToOperationLog("Resulting object: " + r);
</trans>

Hinweis

Im Beispiel erwartet die Funktion processcustomer in Oracle zwei Parameter: das benutzerdefinierte Objekt (example_customer_details) und ein VARCHAR (new_account_number). Im obigen Beispiel stellt das Wörterbuch $cust das benutzerdefinierte Objekt dar, und NA0233 stellt das VARCHAR dar.

Vorsicht

Bei der Ausgabe sind die Eigenschaftsnamen des Datentyps groß- und kleinschreibungsabhängig und daher in Großbuchstaben. Bei Eingabeobjekten wird die Groß- und Kleinschreibung der Eigenschaftsnamen nicht beachtet.

DBCloseConnection

Deklaration

void DBCloseConnection(string databaseId)

Syntax

DBCloseConnection(<databaseId>)

Erforderliche Parameter

  • databaseId: Ein Zeichenfolgenverweis auf eine Datenbankverbindung im aktuellen Projekt

Beschreibung

Führt die aktuelle Transaktion durch und schließt die Datenbankverbindung.

Die in diesem Funktionsaufruf verwendete Datenbank muss als Datenbankverbindung im aktuellen Projekt definiert sein. Weitere Informationen finden Sie in den Anweisungen zum Einfügen von Endpunkten im Abschnitt Endpunkte unter Jitterbit Script.

Hinweis

Mit dieser Funktion erstellte Endpunkte sind in der Endpunktnutzungsberichterstattung enthalten und werden auf Ihre Lizenz angerechnet.

Beispiele

// Schließen einer Datenbankverbindung
DBCloseConnection("<TAG>endpoint:database/My Database</TAG>");

DBExecute

Deklaration

array DBExecute(string databaseId, string sql)

int DBExecute(string databaseId, string sql, string outputVariable,...)

Syntax

DBExecute(<databaseId>, <sql>)

DBExecute(<databaseId>, <sql>, <outputVariable>,...)

Erforderliche Parameter

  • databaseId: Ein Zeichenfolgenverweis auf eine Datenbankverbindung im aktuellen Projekt
  • sql: Der SQL-Befehl, der für die Datenbank ausgeführt werden soll
  • outputVariable: (Zweite Form) Ein Ausgabeparameter, der den in dem SQL-Befehl zurückgegebenen Feldern entspricht. Zusätzliche Argumente können nach Bedarf angegeben werden.

Beschreibung

Führt eine SQL-Anweisung für eine Datenbank aus und gibt die Ergebnisse zurück.

Wenn die SQL-Anweisung ein Resultset erzeugt, gibt es zwei Möglichkeiten, die Daten abzurufen:

  • Wenn Sie nur die zwei erforderlichen Parameter angeben (erste Form), gibt die Funktion das vollständige Recordset als Array von Zeilen zurück.

    Sie können dann eine While()-Schleife verwenden, um die Zeilen zu durchlaufen, und Get() verwenden, um die Daten abzurufen. Wenn keine Zeilen zurückgegeben werden, gibt die Methode ein leeres Array zurück (Length($arr) == 0).

  • Wenn Sie zusätzlich zu den zwei erforderlichen Parametern Ausgabevariablen angeben (zweite Form), werden die Werte der Felder der ersten Zeile zurückgegeben.

Übergeben Sie Namen von globalen Variablen in Anführungszeichen als Parameter nach den ersten zwei Parametern. Der Wert des ersten Feldes der ersten Zeile wird in die globale Variable geschrieben, die als dritter Parameter übergeben wird, das zweite Feld der ersten Zeile in den vierten Parameter usw. Alternativ können die globalen Variablen durch Voranstellen eines $-Zeichens als Referenz übergeben werden, z. B. $output.

Der Rückgabewert ist in diesem Fall die Anzahl der zurückgegebenen Datensätze: entweder 1 (wenn Datensätze gefunden wurden) oder 0 (wenn keine gefunden wurden).

Die zurückgegebenen Datenwerte sind immer Strings. Binärdaten werden als Hex-String-Darstellung zurückgegeben.

Die in diesem Funktionsaufruf verwendete Datenbank muss als Datenbankverbindung im aktuellen Projekt definiert sein. Weitere Informationen finden Sie in den Anweisungen zum Einfügen von Endpunkten im Abschnitt Endpunkte in Jitterbit Script.

Hinweis

Mit dieser Funktion erstellte Endpunkte sind in der Endpunkt-Nutzungsberichterstattung enthalten und werden auf Ihre Lizenz angerechnet.

Zugehörige Jitterbit-Variablen

  • Wenn diese Methode erfolgreich abgeschlossen wird, enthält $jitterbit.scripting.db.rows_affected die Anzahl der von der Abfrage betroffenen Zeilen.
  • Wenn ein JDBC-Treiber zum Verbinden mit einer Datenbank verwendet wird, setzen Sie jitterbit.scripting.db.search.rowset auf true vor der Funktion, um Aufrufe einer gespeicherten Prozedur, die mehrere Ergebnisse zurückgibt, so zu konfigurieren, dass das erste nicht leere Datensatz-Set statt eines leeren Sets zurückgegeben wird.
  • Um die Anweisung in einer Transaktion auszuführen, setzen Sie die Variablen $jitterbit.scripting.db.auto_commit=false und $jitterbit.scripting.db.transaction=true in einem Skript vor dem Aufruf. Die Transaktion wird am Ende einer erfolgreichen Transformation committed. Das Setzen beider Variablen (auto_commit und transaction) auf true führt zu einem Fehler.
  • Setzen Sie $jitterbit.scripting.db.max_rows, um die Anzahl der zurückzugebenden Datensätze zu begrenzen. Der Standard ist 10.000 Zeilen.

Informationen zur Fehlerbehebung finden Sie unter DBExecute: Fehler, wenn auto_commit und transaction beide true sind im Leitfaden zur Fehlerbehebung bei Operationen sowie unter Datenbank (JDBC): DBLookup oder DBExecute schlägt mit Base64-Decodierungsfehler fehl und Datenbank: DBLookup oder DBExecute schlägt mit „Kein geeigneter Treiber gefunden" beim Testen eines Skripts fehl im Leitfaden zur Fehlerbehebung bei Konnektoren.

Beispiele

Beispiel 1: Ausführen und Abrufen von Werten in einem Array

// Results of the SQL select as an array

t = "<TAG>endpoint:database/My Database</TAG>";

rows = DBExecute(t, "SELECT ORDER_TYPE, ORDER_AMOUNT FROM PO_HEADER WHERE PO_NUMBER = 1");

// The value of the database column ORDER_TYPE
// can then be accessed with
// Get($rows, $i, 0)
// where $i is the 0-based count of the row you
// want retrieved..

Beispiel 2: Ausführen und Abrufen von Werten in übergebenen referenzierten globalen Variablen

// Results of the SQL select will be in the
// $custName and $custAddr global variables:

t = "<TAG>endpoint:database/My Database</TAG>";

DBExecute(t,
  "SELECT CustomerName, CustomerAddress FROM Customers WHERE CustomerId = " + $custId,
  $custName, $custAddr);

// The value of the database column CustomerName
// can then be accessed with either
// Get("custName")
// or
// $custName

Beispiel 3: Ausführen und Abrufen von Werten in übergebenen benannten globalen Variablen

// Results of the SQL select will be in the
// OrderType and OrderAmount global variables:

t = "<TAG>endpoint:database/My Database</TAG>";

DBExecute(t, "SELECT ORDER_TYPE, ORDER_AMOUNT FROM PO_HEADER WHERE PO_NUMBER = 1",
  "OrderType", "OrderAmount");

// The value of the database column ORDER_TYPE
// can then be accessed with either
// Get("OrderType")
// or
// $OrderType

Beispiel 4: Ausführen einer gespeicherten Prozedur

// An alternative to the CallStoredProcedure function.
// Configurable procedure definition as a variable:

$sql = "BEGIN
MyStoredProcedure;
END;";

DBExecute("<TAG>Sources/myDBTarget</TAG>", $sql);

DBLoad

Deklaration

void DBLoad(string source, string target, int mode, string tablename, string columnNames[, string columnKeynames, int skipLines, string dateFormat, string datetimeFormat])

Syntax

DBLoad(<source>, <target>, <mode>, <tablename>, <columnNames>[, <columnKeynames>, <skipLines>, <dateFormat>, <datetimeFormat>])

Erforderliche Parameter

  • source: Ein String-Referenzpfad zu einer Aktivität, die einem Datei-Typ-Endpunkt im aktuellen Projekt zugeordnet ist und eine einzelne Datei im CSV-Format ist
  • target: Ein String-Referenzpfad zu einer Datenbankaktivität, die einem Datenbankendpunkt im aktuellen Projekt zugeordnet ist
  • mode: Eine Ganzzahl; einer von 1 (Upsert), 2 (Einfügen) oder 3 (Aktualisieren)
  • tablename: Die Tabelle in der Zieldatenbank
  • columnNames: Eine kommagetrennte Liste von Spaltennamen
  • columnKeynames: Eine kommagetrennte Liste von Spaltennamen, die den Aktualisierungsschlüssel bilden. Erforderlich, wenn der Modus nicht 2 ist.

Optionale Parameter

  • skipLines: Anzahl der Zeilen, die am Anfang der Datei ignoriert werden sollen (wird zum Überspringen von Kopfzeilen verwendet)
  • dateFormat: Gibt das Format von Datumsfeldern an, z. B. "Date" in Oracle-Datenbanken
  • datetimeFormat: Gibt das Format von Datetime-Feldern an, z. B. "TimeStamp" in Oracle-Datenbanken

Beschreibung

Nimmt eine Quelle (eine einzelne Datei im CSV-Format) und lädt die Daten in eine angegebene Tabelle in einer Zieldatenbank.

Der Parameter columnKeynames wird nicht verwendet, wenn nur eingefügt wird (mode=2), und kann in diesem Fall weggelassen werden.

Quelle und Ziel

Die in diesem Funktionsaufruf verwendete Quelle muss als Aktivität definiert sein, die einem Datei-Typ-Endpunkt im aktuellen Projekt zugeordnet ist. Dazu gehören konfigurierte File Share-, FTP-, HTTP-, Local Storage- und Temporary Storage-Aktivitäten. Die erste Datei, die von dieser Quelle zurückgegeben wird, wird verwendet.

Das in diesem Funktionsaufruf verwendete Ziel muss als Datenbankaktivität definiert sein, die einem Datenbankendpunkt im aktuellen Projekt zugeordnet ist.

Weitere Informationen finden Sie in den Anweisungen zum Einfügen von Endpunkten im Abschnitt Endpunkte in Jitterbit Script.

Informationen zur Fehlerbehebung finden Sie unter DBLoad: Erfordert einen JDBC-Datenbanktreiber im Leitfaden zur Fehlerbehebung bei Operationen.

Warnung

Die Funktion DBLoad() funktioniert nur bei Datenbankaktivitäten, die einem Datenbankendpunkt mit einem JDBC-Treiber zugeordnet sind.

Hinweis

Endpunkte, die mit dieser Funktion erstellt werden, sind in der Endpunktnutzungsberichterstellung enthalten und werden auf Ihre Lizenz angerechnet.

Beispiele

// Using the file returned from the source
// "FTP Files", this example upserts (mode=1)
// into the table "MyTable" on the database
// target "myDatabase". "FTP Files" is
// expected to be a CSV file that contains data
// for the columns "ID,Col1,Col2,Col3".
// The update key (used to decide whether to
// update or insert) will be on the column "ID".
// The first line of the CSV file will be
// ignored as it is a header:

DBLoad("<TAG>activity:ftp/FTP Endpoint/ftp_read/FTP Files</TAG>",
    "<TAG>activity:database/Database Endpoint/database_insert/myDatabase</TAG>",
    1, "MyTable", "ID,Col1,Col2,Col3", "ID", 1);

DBLookup

Deklaration

string DBLookup(string databaseId, string sql)

Syntax

DBLookup(<databaseId>, <sql>)

Erforderliche Parameter

  • databaseId: Ein String-Referenzpfad zu einer Datenbankverbindung im aktuellen Projekt
  • sql: Der SQL-Befehl, der für die Datenbank ausgeführt werden soll

Beschreibung

Führt eine SQL-Anweisung für eine Datenbank aus und gibt das erste Feld des ersten Ergebnisses zurück, das den angegebenen Kriterien entspricht.

Der zurückgegebene Datenwert ist immer ein String. Binärdaten werden als Hex-String-Darstellung zurückgegeben. Wenn keine Zeilen für die angegebene Abfrage zurückgegeben werden, gibt die Funktion null zurück.

Die globale Jitterbit-Variable $jitterbit.scripting.db.rows_affected wird von dieser Methode nicht gesetzt.

Für erweiterte Abfragen, bei denen Sie mehr als einen Wert oder eine Zeile abrufen möchten, verwenden Sie die Funktionen DBLookupAll oder DBExecute.

Informationen zur Fehlerbehebung finden Sie unter Datenbank (JDBC): DBLookup oder DBExecute schlägt mit einem Base64-Decodierungsfehler fehl und Datenbank: DBLookup oder DBExecute schlägt mit „Kein geeigneter Treiber gefunden" fehl, wenn ein Skript getestet wird im Leitfaden zur Fehlerbehebung bei Konnektoren.

Datenbank-ID

Die in diesem Funktionsaufruf verwendete Datenbank muss als Datenbankverbindung im aktuellen Projekt definiert sein. Weitere Informationen finden Sie in den Anweisungen zum Einfügen von Endpunkten im Abschnitt Endpunkte in Jitterbit Script.

Hinweis

Endpunkte, die mit dieser Funktion erstellt werden, sind in der Endpunktnutzungsberichterstellung enthalten und werden auf Ihre Lizenz angerechnet.

Beispiele

// Returns the first field of the first result
// from running the SQL query
result = DBLookup("<TAG>endpoint:database/My Database</TAG>",
    "SELECT ORDER_TYPE FROM PO_HEADER WHERE PO_NUMBER=1");

DBLookupAll

Deklaration

array DBLookupAll(string databaseId, string sql)

Syntax

DBLookupAll(<databaseId>, <sql>)

Erforderliche Parameter

  • databaseId: Ein String-Referenzpfad zu einer Datenbankverbindung im aktuellen Projekt
  • sql: Der SQL-Befehl, der für die Datenbank ausgeführt werden soll

Beschreibung

Führt eine SQL-Anweisung für eine Datenbank aus und gibt die Ergebnisse zurück, die den angegebenen Kriterien entsprechen.

Die zurückgegebenen Daten werden immer als zweidimensionales Array von Strings zurückgegeben. Binärdaten werden als Hex-String-Darstellung zurückgegeben. Wenn keine Zeilen für die angegebene Abfrage zurückgegeben werden, gibt die Funktion ein leeres Array zurück.

Die globale Jitterbit-Variable $jitterbit.scripting.db.rows_affected wird von dieser Methode nicht gesetzt.

Die in diesem Funktionsaufruf verwendete Datenbank muss als Datenbankverbindung im aktuellen Projekt definiert sein. Weitere Informationen finden Sie in den Anweisungen zum Einfügen von Endpunkten im Abschnitt Endpunkte in Jitterbit Script.

Für erweiterte Abfragen, bei denen Sie direkt in globale Variablen abrufen möchten, verwenden Sie die Funktion DBExecute.

Hinweis

Mit dieser Funktion erstellte Endpunkte sind in der Endpunktnutzungsberichterstellung enthalten und werden auf Ihre Lizenz angerechnet.

Beispiele

// Returns the result from running the SQL query
result = DBLookupAll("<TAG>endpoint:database/My Database</TAG>",
    "SELECT ORDER_TYPE FROM PO_HEADER WHERE PO_NUMBER=1");

DBRollbackTransaction

Deklaration

void DBRollbackTransaction(string databaseId)

Syntax

DBRollbackTransaction(<databaseId>)

Erforderliche Parameter

  • databaseId: Ein String-Referenzpfad zu einer Datenbankverbindung im aktuellen Projekt

Beschreibung

Rollback der aktuellen Transaktion und Schließung der Datenbankverbindung.

Die in diesem Funktionsaufruf verwendete Datenbank muss als Datenbankverbindung im aktuellen Projekt definiert sein. Weitere Informationen finden Sie in den Anweisungen zum Einfügen von Endpunkten im Abschnitt Endpunkte in Jitterbit Script.

Hinweis

Mit dieser Funktion erstellte Endpunkte sind in der Endpunktnutzungsberichterstellung enthalten und werden auf Ihre Lizenz angerechnet.

Beispiele

// Rolls back the current transaction
DBRollbackTransaction("<TAG>endpoint:database/My Database</TAG>");

DBWrite

Deklaration

void DBWrite(string source, string target, int mode, string tablename, string columnNames[, string columnKeynames, int skipLines, string dateFormat, string datetimeFormat])

Syntax

DBWrite(<source>, <target>, <mode>, <tablename>, <columnNames>[, <columnKeynames>, <skipLines>, <dateFormat>, <datetimeFormat>])

Beschreibung

Ein Alias für die Funktion DBLoad. Weitere Informationen finden Sie unter DBLoad.

Hinweis

Mit dieser Funktion erstellte Endpunkte sind in der Endpunktnutzungsberichterstellung enthalten und werden auf Ihre Lizenz angerechnet.

SetDBInsert

Deklaration

void SetDBInsert()

Syntax

SetDBInsert()

Beschreibung

Setzt den aktuellen Modus für Einfügen/Aktualisieren für den aktuellen Datensatz auf „Einfügen" zurück. Der Rückgabewert ist null.

Beispiele

// Setzt den Modus für Einfügen/Aktualisieren auf „Einfügen"
// für den aktuellen Datensatz
SetDBInsert();

SetDBUpdate

Declaration

void SetDBUpdate()

Syntax

SetDBUpdate()

Beschreibung

Setzt den aktuellen Modus für Einfügen/Aktualisieren für den aktuellen Datensatz auf „Aktualisieren" zurück. Der Rückgabewert ist null.

Beispiele

// Setzt den Modus für Einfügen/Aktualisieren auf „Aktualisieren"
// für den aktuellen Datensatz
SetDBUpdate();

SQLEscape

Declaration

string SQLEscape(string unescapedSQL[, bool escapeBackslash])

Syntax

SQLEscape(<unescapedSQL>[, <escapeBackslash>])

Erforderliche Parameter

  • unescapedSQL: Eine SQL-Zeichenkette, die maskiert werden soll

Optionale Parameter

  • escapeBackslash: Boolesches Flag, das angibt, ob Backslashes („\") durch Verdopplung maskiert werden sollen; Standard ist false

Beschreibung

Führt die erforderliche Maskierung von Literalzeichenketten durch, die in einer SQL-Anweisung verwendet werden.

Zeichenketten, die als Zeichenkonstanten in einer SQL-Anweisung verwendet werden, verwenden ein einfaches Anführungszeichen (') als Trennzeichen. Wenn die tatsächlichen Daten einfache Anführungszeichen enthalten, müssen diese durch doppelte Angabe maskiert werden. Diese Methode maskiert einfache Anführungszeichen nach dem SQL-Standard, indem jedes einfache Anführungszeichen (') durch zwei einfache Anführungszeichen ('') ersetzt wird. Wenn auch Backslash-Zeichen maskiert werden sollen, geben Sie den zweiten Parameter an und setzen Sie ihn auf true.

Beispiele

// In this example, the variable GUID needs to
// have any single quotes in it escaped
// (doubled); the resulting string is then
// enclosed in single quotes by the Quote
// function before being used in a DBLookup
// function:


DBLookup("<TAG>endpoint:database/My Database</TAG>",
    "SELECT ORDER FROM PO_HEADER WHERE PO_ID=" + Quote(SQLEscape(GUID)));

Unmap

Declaration

void Unmap()

Syntax

Unmap()

Beschreibung

Diese Funktion wird in Zuordnungen verwendet und setzt ein Zielfeld so, dass es als nicht zugeordnet behandelt wird und aus der Ausgabe entfernt wird. Der Rückgabewert ist null.

Das Zuordnen eines null-Quellwerts unterscheidet sich vom Aufrufen von Unmap: Ein null-Wert wird weiterhin in das Ausgabefeld geschrieben, während Unmap das Feld vollständig auslässt. Verwenden Sie Unmap, wenn das Feld selbst in der Ausgabe fehlen muss, nicht nur leer sein.

Diese Funktion hat nur dann eine Auswirkung, wenn sie direkt aus dem Zuordnungsausdruck des Zielfelds selbst zurückgegeben wird. Das Aufrufen von Unmap aus einem Skript, das von RunScript aufgerufen wird, hat keine Auswirkung auf das Feld, da RunScript das Ergebnis des aufgerufenen Skripts als Zeichenkette zurückgibt, anstatt das Unmap-Signal zurück zur Zuordnung zu propagieren. Mit Agent-Version 12.9 und später hat ein RunScript-Aufruf früher im Zuordnungsausdruck des Zielfelds diese Einschränkung nicht. Bei früheren Agent-Versionen gibt Unmap in diesem Fall stattdessen null zurück.

Das Verhalten variiert je nach Zieltyp:

  • JSON und XML: Das Feld oder Element wird vollständig ausgelassen. Wenn jedes Feld eines JSON-Objekts nicht zugeordnet ist, bleibt das Objekt in der Ausgabe als leeres {} erhalten, anstatt entfernt zu werden.
  • CSV: Die Spalte wird nicht entfernt; das Feld wird stattdessen als leerer Wert geschrieben, da eine CSV-Zeile keine Positionsspalte auslassen kann.
  • XSD, ZIP und andere schemagesteuerte XML-Ziele: Das Element wird ausgelassen. Wenn jedes untergeordnete Element eines übergeordneten Elements nicht zugeordnet ist, wird auch das übergeordnete Element ausgelassen (ein Stammelement mit allen nicht zugeordneten Feldern wird selbstschließend), und dies setzt sich durch verschachtelte Ebenen eines hierarchischen Schemas fort.
  • Datenbank: Das Feld wird aus der generierten INSERT-Anweisung ausgeschlossen.

Beispiele

valueToInsert = DBLookup(....);
// If valueToInsert returned by a DBLookup is null, we want to treat
// this field as unmapped and we do not want to include it in the INSERT statement
// that is being generated for the DB target for this record:
If (valueToInsert == Null(), Unmap(), valueToInsert);

<SEQUENCE\>

Deklaration

<SEQUENCE>

Syntax

<SEQUENCE>

Beschreibung

Diese Funktion wird in Zuordnungen mit Oracle-Datenbanken verwendet, wenn das Ziel Tabellen enthält, die durch eine Primärschlüssel-/Fremdschlüsselbeziehung verknüpft sind. In diesem Fall ordnet man diese den Primärschlüsseln zu, die von der Oracle-Datenbank generiert werden.

Für andere Datenbanken als Oracle verwendet man stattdessen die Funktion <SQLIDENTITY>.

Hinweis

In der Syntax dieser Funktion sind die Symbole kleiner als („<") und größer als („>") Teil der Funktionssyntax.

Beispiele

Wenn <trans>-Tags vorhanden sind, sollte <SEQUENCE> außerhalb davon platziert werden, wie folgt:

<trans>
</trans>
<SEQUENCE>

<SQLIDENTITY\>

Deklaration

<SQLIDENTITY>

Syntax

<SQLIDENTITY>

Beschreibung

Diese Funktion wird in Zuordnungen mit Nicht-Oracle-Datenbanken verwendet, wenn das Ziel Tabellen enthält, die durch eine Primärschlüssel-/Fremdschlüsselbeziehung verknüpft sind. In diesem Fall ordnet man diese den Primärschlüsseln zu, die von der Datenbank generiert werden, wie z. B. Identity in SQL Server oder Serial in PostgreSQL. Für Oracle-Datenbanken verwendet man stattdessen die Funktion <SEQUENCE>.

Hinweis

In der Syntax dieser Funktion sind die Symbole kleiner als („<") und größer als („>") Teil der Funktionssyntax.

Beispiele

Wenn <trans>-Tags vorhanden sind, sollte <SQLIDENTITY> außerhalb davon platziert werden, wie folgt:

<trans>
</trans>
<SQLIDENTITY>

<UDF\>

Deklaration

<UDF>string userDefinedFunction

Syntax

<UDF><userDefinedFunction>

Erforderliche Parameter

  • userDefinedFunction: Eine Zeichenkette, die einen benutzerdefinierten Funktionsaufruf definiert

Beschreibung

Fügt eine benutzerdefinierte Datenbankfunktion am Anfang einer Formel hinzu. Das Präfix <UDF> wird vor der Übergabe an die Datenbank aus dem Ausdruck entfernt. Beachten Sie, dass öffnende und schließende <trans>-Tags verwendet werden können, um Teile des Funktionsaufrufs zu kennzeichnen, die von Jitterbit ausgewertet werden sollen, bevor der Ausdruck an eine Datenbank übergeben wird.

Hinweis

In der Syntax dieser Funktion sind die Symbole kleiner als und größer als um <UDF> Teil der Funktionssyntax.

Beispiele

// The user-defined function geography::Point()
// is being called with parameters created by evaluating
// the Jitterbit Script enclosed by <trans> tags:

<UDF>geography::Point(<trans>json$Incidents$item.Latitude$ + ","
  + json$Incidents$item.Longitude$ + ",4326";</trans>)