Funciones de base de datos en Jitterbit Studio
Las funciones de base de datos proporcionan acceso a interacciones básicas de base de datos.
CacheLookup
Declaración
string CacheLookup(string databaseId, string sql)
Sintaxis
CacheLookup(<databaseId>, <sql>)
Parámetros requeridos
databaseId: Una ruta de referencia de cadena a una conexión de Base de datos en el proyecto actualsql: El comando SQL a ejecutar contra la base de datos
Descripción
Esta función es igual a DBLookup, excepto que la primera búsqueda almacena la información en caché y las búsquedas posteriores utilizan este caché en lugar de consultar repetidamente la base de datos. El caché es válido durante la cadena de operaciones en la que se llama.
Si no hay filas devueltas para la consulta especificada en sql, la función devuelve null.
La variable global de Jitterbit $jitterbit.scripting.db.rows_affected no se establece mediante este método.
La base de datos utilizada en esta llamada de función debe definirse como una conexión de Base de datos en el proyecto actual. Para obtener más información, consulta las instrucciones sobre cómo insertar puntos de conexión en la sección Puntos de conexión en Jitterbit Script.
Una alternativa al almacenamiento en caché es utilizar las funciones Set y Get.
Nota
Los puntos de conexión creados con esta función se incluyen en reportes de uso de puntos de conexión y cuentan hacia tu licencia.
Ejemplos
// 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
Declaración
type CallStoredProcedure(string databaseId, string spName, type resultSet[, string inputOutputVariable,...])
Sintaxis
CallStoredProcedure(<databaseId>, <spName>, <resultSet>[, <inputOutputVariable>,...])
Parámetros requeridos
databaseId: Una ruta de referencia de cadena a una conexión de Base de datos en el proyecto actualspName: El procedimiento almacenado a ejecutar en el servidor de base de datosresultSet: Una variable global para contener el conjunto de resultados devuelto por el servidor de base de datos, si aplica. (Consulta las notas a continuación).
Parámetros opcionales
inputOutputVariable: Un parámetro de entrada o salida a pasar al procedimiento almacenado; estos parámetros se añaden según sea necesario por la firma del procedimiento almacenado
Descripción
Ejecuta el procedimiento almacenado spName utilizando la información de conexión especificada por la conexión de Base de datos identificada por databaseId.
Si aplica, el resultSet devuelto es un arreglo bidimensional de cadenas. Si el procedimiento almacenado no devuelve un resultSet o si se utiliza un controlador ODBC, este argumento se ignora.
Para casos de uso no cubiertos por la función CallStoredProcedure, utiliza la función DBExecute en su lugar.
Nota
Con bases de datos de Microsoft SQL Server, esta función llama a procedimientos almacenados solo en el esquema de propietario de base de datos predeterminado (dbo). Para llamar a procedimientos almacenados en otros esquemas, utiliza la función DBExecute.
Precaución
El parámetro resultSet es compatible únicamente con controladores de base de datos JDBC en este momento. Si se utiliza ODBC, resultSet siempre devolverá null.
Los parámetros opcionales restantes se utilizan para pasar argumentos de entrada y salida al procedimiento almacenado. La cantidad de argumentos requeridos depende de la firma del procedimiento almacenado.
Los argumentos de entrada pueden ser un valor codificado, el valor de una fuente o el valor de un cálculo o fórmula. Los argumentos de salida (incluido resultSet) se especifican por referencia como "$name", donde "name" es el nombre de la variable global que contendrá el valor de salida. El valor de retorno y el tipo de la función es el valor de retorno y el tipo del procedimiento almacenado.
La base de datos utilizada en esta llamada de función debe estar definida como una conexión de base de datos en el proyecto actual. Para obtener más información, consulta las instrucciones sobre cómo insertar endpoints en la sección Endpoints en Jitterbit Script.
Para solucionar problemas, consulta CallStoredProcedure: resultSet siempre null con controladores ODBC y CallStoredProcedure: "No se encontró el procedimiento almacenado o la función" con PostgreSQL JDBC en la guía de solución de problemas de operaciones.
Nota
Los endpoints creados con esta función se incluyen en reportes de uso de endpoints y cuentan para tu licencia.
Ejemplos
Ejemplo 1: Llamar a un procedimiento almacenado sin conjunto de resultados
// 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")
Ejemplo 2: Llamar a un procedimiento almacenado con un conjunto de resultados
// 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);
Ejemplo 3: Llamar a un procedimiento almacenado que accede a un tipo de objeto de Oracle
Utilizar tipos de objeto y registro de Oracle
Jitterbit es compatible con tipos de objeto de Oracle para trabajar con bases de datos Oracle cuando se utiliza el controlador Oracle JDBC. Los tipos de objeto de Oracle son similares a los tipos de registro de Oracle, que no son compatibles con Jitterbit debido a la falta de compatibilidad de Oracle.
Advertencia
Para utilizar tipos de objeto de Oracle, debes utilizar el controlador Oracle JDBC. El controlador Oracle ODBC no es compatible con tipos de objeto de Oracle ni con tipos de registro de Oracle.
Para acceder a tipos de registro de Oracle utilizando el controlador Oracle JDBC, puedes crear un procedimiento almacenado "contenedor" en tu base de datos Oracle que pueda acceder y convertir un tipo de registro de Oracle. Luego, utiliza la función CallStoredProcedure en Jitterbit para llamar al procedimiento contenedor y hacer que realice la conversión hacia y desde un tipo de objeto de Oracle.
Consejo
Puedes encontrar más información sobre las diferencias entre los tipos de registro de Oracle y los tipos de objeto de Oracle en la documentación de Oracle. Consulta Record Variable Declaration y Using PL/SQL With Object Types de la documentación de Oracle Database Release 18 para obtener más información.
El ejemplo que sigue describe cómo puedes utilizar objetos de Oracle en una función CallStoredProcedure de manera simplificada.
Definiciones de tipos de Oracle
Una definición de tipo de objeto de Oracle sigue este patrón:
CREATE OR REPLACE TYPE example_customer_details AS OBJECT
(status NUMBER
,party_id NUMBER
,account_id VARCHAR
);
Una definición de tipo de registro de Oracle sigue este patrón:
CREATE TYPE example_customer_details IS RECORD
(status NUMBER
,party_id NUMBER
,account_id VARCHAR
);
Pasos del ejemplo
Paso 1: Crear el objeto Para utilizar tipos de objeto de Oracle, primero crea el objeto en la base de datos Oracle:
CREATE OR REPLACE TYPE example_customer_details AS OBJECT
(status NUMBER
,party_id NUMBER
,account_id VARCHAR
);
Paso 2: Crear el Paquete A continuación, crea el paquete como una función en la base de datos Oracle:
CREATE OR REPLACE PACKAGE example AS
FUNCTION processcustomer(custin IN example_customer_details, new_account_number IN VARCHAR) RETURN example_customer_details;
END example;
Paso 3: Crear el Cuerpo del Paquete A continuación, crea el cuerpo del paquete como una función en la base de datos Oracle:
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;
Paso 4: Llamar al Procedimiento Almacenado en Jitterbit
Ahora estás listo para llamar al procedimiento almacenado processcustomer desde Jitterbit usando la función CallStoredProcedure. Este script de ejemplo muestra cómo pasar un objeto a la función CallStoredProcedure. También puedes pasar objetos desde un procedimiento almacenado como parámetros de retorno o salida de manera similar.
<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>
Nota
En el ejemplo, la función processcustomer en Oracle espera dos parámetros: el objeto personalizado (example_customer_details) y un VARCHAR (new_account_number). En el ejemplo anterior, el diccionario $cust representa el objeto personalizado, y NA0233 representa el VARCHAR.
Precaución
En la salida, los nombres de las propiedades del tipo de dato sí distinguen mayúsculas de minúsculas y por lo tanto están en mayúsculas. Para objetos de entrada, los nombres de las propiedades no distinguen mayúsculas de minúsculas.
DBCloseConnection
Declaración
void DBCloseConnection(string databaseId)
Sintaxis
DBCloseConnection(<databaseId>)
Parámetros requeridos
databaseId: Una ruta de referencia de cadena a una conexión de Base de datos en el proyecto actual
Descripción
Confirma la transacción actual y cierra la conexión de Base de datos.
La base de datos utilizada en esta llamada de función debe estar definida como una conexión de Base de datos en el proyecto actual. Para obtener más información, consulta las instrucciones sobre cómo insertar puntos de conexión en la sección Puntos de conexión en Jitterbit Script.
Nota
Los puntos de conexión creados con esta función se incluyen en reportes de uso de puntos de conexión y cuentan hacia tu licencia.
Ejemplos
// Closing a Database connection
DBCloseConnection("<TAG>endpoint:database/My Database</TAG>");
DBExecute
Declaración
array DBExecute(string databaseId, string sql)
int DBExecute(string databaseId, string sql, string outputVariable,...)
Sintaxis
DBExecute(<databaseId>, <sql>)
DBExecute(<databaseId>, <sql>, <outputVariable>,...)
Parámetros requeridos
databaseId: Una ruta de referencia de cadena a una conexión de Base de datos en el proyecto actualsql: El comando SQL a ejecutar contra la base de datosoutputVariable: (Segunda forma) Un parámetro de salida que se corresponde con los campos devueltos en el comando SQL. Se pueden especificar argumentos adicionales según sea necesario.
Descripción
Ejecuta una sentencia SQL en una base de datos y devuelve los resultados.
Si la sentencia SQL produce un conjunto de resultados, hay dos formas de recuperar los datos:
-
Si especificas solo los dos parámetros requeridos (primera forma), la función devolverá el conjunto de registros completo como un arreglo de filas.
Luego puedes usar un bucle
While()para iterar sobre las filas y usarGet()para recuperar los datos. Si no se devuelven filas, el método devuelve un arreglo vacío(Length($arr) == 0). -
Si especificas variables de salida además de los dos parámetros requeridos (segunda forma), se devuelven los valores de los campos de la primera fila.
Pasa nombres de variables globales entre comillas como parámetros después de los dos primeros parámetros. El valor del primer campo de la primera fila se escribirá en la variable global pasada como tercer parámetro, el segundo campo de la primera fila en el cuarto parámetro, y así sucesivamente. Alternativamente, las variables globales pueden pasarse por referencia precediendo con un signo de dólar, como $output.
El valor de retorno en este caso es el número de registros devueltos; ya sea 1 (si se encontraron registros) o 0 (si no se devolvió ninguno).
Los valores de datos devueltos siempre son cadenas. Los datos binarios se devuelven como su representación de cadena hexadecimal.
La base de datos utilizada en esta llamada de función debe definirse como una conexión de Base de datos en el proyecto actual. Para más información, consulta las instrucciones sobre inserción de endpoints en la sección Endpoints en Jitterbit Script.
Nota
Los endpoints creados con esta función se incluyen en reportes de uso de endpoints y cuentan hacia tu licencia.
Variables Jitterbit relacionadas
- Si este método se completa correctamente,
$jitterbit.scripting.db.rows_affectedcontendrá el número de filas afectadas por la consulta. - Si se utiliza un controlador JDBC para conectarse a una base de datos, establece
jitterbit.scripting.db.search.rowsetentrueantes de la función para que cualquier llamada a un procedimiento almacenado que devuelva múltiples resultados devuelva el primer conjunto de registros no vacío en lugar de devolver un conjunto vacío. - Para ejecutar la sentencia en una transacción, establece las variables
$jitterbit.scripting.db.auto_commit=falsey$jitterbit.scripting.db.transaction=trueen un script antes de la llamada. La transacción se confirmará al final de una transformación exitosa. Establecer ambas variables (auto_commitytransaction) entrueresultará en un error. - Establece
$jitterbit.scripting.db.max_rowspara limitar el número de registros a devolver. El valor predeterminado es 10,000 filas.
Para solucionar problemas, consulta DBExecute: Error cuando auto_commit y transaction son ambos true en la guía de solución de problemas de operaciones, y Base de datos (JDBC): DBLookup o DBExecute falla con error de decodificación Base64 y Base de datos: DBLookup o DBExecute falla con "No suitable driver found" al probar un script en la guía de solución de problemas de conectores.
Ejemplos
Ejemplo 1: Ejecutar y recuperar valores en un arreglo
// 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..
Ejemplo 2: Ejecutar y recuperar valores en variables globales referenciadas pasadas
// 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
Ejemplo 3: Ejecutar y recuperar valores en variables globales nombradas pasadas
// 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
Ejemplo 4: Ejecutar un procedimiento almacenado
// An alternative to the CallStoredProcedure function.
// Configurable procedure definition as a variable:
$sql = "BEGIN
MyStoredProcedure;
END;";
DBExecute("<TAG>Sources/myDBTarget</TAG>", $sql);
DBLoad
Declaración
void DBLoad(string source, string target, int mode, string tablename, string columnNames[, string columnKeynames, int skipLines, string dateFormat, string datetimeFormat])
Sintaxis
DBLoad(<source>, <target>, <mode>, <tablename>, <columnNames>[, <columnKeynames>, <skipLines>, <dateFormat>, <datetimeFormat>])
Parámetros requeridos
source: Una ruta de referencia de cadena a una actividad asociada con un endpoint de tipo archivo en el proyecto actual que es un archivo único en formato CSVtarget: Una ruta de referencia de cadena a una actividad de Base de datos asociada con un endpoint de Base de datos en el proyecto actualmode: Un entero; uno de1(upsert),2(insert), o3(update)tablename: La tabla en la base de datos de destinocolumnNames: Una lista de nombres de columnas separados por comascolumnKeynames: Una lista de nombres de columnas separados por comas que forman la clave de actualización. Requerido si mode no es2.
Parámetros opcionales
skipLines: Número de líneas a ignorar al principio del archivo (se utiliza para omitir encabezados)dateFormat: Especifica el formato de los campos de fecha, como "Date" en bases de datos OracledatetimeFormat: Especifica el formato de los campos de fecha y hora, como "TimeStamp" en bases de datos Oracle
Descripción
Toma una fuente (un único archivo en formato CSV) y carga los datos en una tabla especificada en una base de datos de destino.
El parámetro columnKeynames no se utiliza cuando solo se inserta (mode=2) y puede omitirse en ese caso.
Origen y destino
La fuente utilizada en esta llamada de función debe definirse como una actividad asociada a un endpoint de tipo archivo en el proyecto actual. Esto incluye actividades configuradas de Compartir archivos, FTP, HTTP, Almacenamiento local y Almacenamiento temporal. Se utilizará el primer archivo devuelto por esa fuente.
El destino utilizado en esta llamada de función debe definirse como una actividad de Base de datos asociada a un endpoint de Base de datos en el proyecto actual.
Para obtener más información, consulta las instrucciones sobre cómo insertar endpoints en la sección Endpoints en Jitterbit Script.
Para solucionar problemas, consulta DBLoad: Requiere un controlador de base de datos JDBC en la guía de solución de problemas de operaciones.
Advertencia
La función DBLoad() funciona solo en actividades de Base de datos asociadas a un endpoint de Base de datos que utiliza un controlador JDBC.
Nota
Los endpoints creados con esta función se incluyen en reportes de uso de endpoints y cuentan para tu licencia.
Ejemplos
// 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
Declaración
string DBLookup(string databaseId, string sql)
Sintaxis
DBLookup(<databaseId>, <sql>)
Parámetros requeridos
databaseId: Una ruta de referencia de cadena a una conexión de Base de datos en el proyecto actualsql: El comando SQL a ejecutar en la base de datos
Descripción
Ejecuta una declaración SQL en una base de datos y devuelve el primer campo del primer resultado que coincida con los criterios especificados.
El valor de datos devuelto siempre es una cadena. Los datos binarios se devuelven como su representación de cadena hexadecimal. Si no hay filas devueltas para la consulta especificada, la función devuelve null.
La variable global de Jitterbit $jitterbit.scripting.db.rows_affected no se establece mediante este método.
Para consultas más avanzadas, donde deseas recuperar más de un valor o fila, utiliza las funciones DBLookupAll o DBExecute.
Para solucionar problemas, consulta Base de datos (JDBC): DBLookup o DBExecute falla con un error de decodificación Base64 y Base de datos: DBLookup o DBExecute falla con "No suitable driver found" al probar un script en la guía de solución de problemas del conector.
ID de base de datos
La base de datos utilizada en esta llamada de función debe definirse como una conexión de Base de datos en el proyecto actual. Para obtener más información, consulta las instrucciones sobre cómo insertar endpoints en la sección Endpoints en Jitterbit Script.
Nota
Los endpoints creados con esta función se incluyen en reportes de uso de endpoints y cuentan para tu licencia.
Ejemplos
// 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
Declaración
array DBLookupAll(string databaseId, string sql)
Sintaxis
DBLookupAll(<databaseId>, <sql>)
Parámetros requeridos
databaseId: Una ruta de referencia de cadena a una conexión de Base de datos en el proyecto actualsql: El comando SQL a ejecutar en la base de datos
Descripción
Ejecuta una sentencia SQL en una base de datos y devuelve los resultados que coinciden con los criterios especificados.
Los datos devueltos siempre se devuelven como un arreglo bidimensional de cadenas. Los datos binarios se devuelven como su representación de cadena hexadecimal. Si no hay filas devueltas para la consulta especificada, la función devuelve un arreglo vacío.
La variable global de Jitterbit $jitterbit.scripting.db.rows_affected no se establece mediante este método.
La base de datos utilizada en esta llamada de función debe definirse como una conexión de Base de datos en el proyecto actual. Para obtener más información, consulta las instrucciones sobre cómo insertar puntos de conexión en la sección Puntos de conexión en Jitterbit Script.
Para consultas más avanzadas, donde deseas recuperar directamente en variables globales, utiliza la función DBExecute.
Nota
Los puntos de conexión creados con esta función se incluyen en reportes de uso de puntos de conexión y cuentan hacia tu licencia.
Ejemplos
// Devuelve el resultado de ejecutar la consulta SQL
result = DBLookupAll("<TAG>endpoint:database/My Database</TAG>",
"SELECT ORDER_TYPE FROM PO_HEADER WHERE PO_NUMBER=1");
DBRollbackTransaction
Declaración
void DBRollbackTransaction(string databaseId)
Sintaxis
DBRollbackTransaction(<databaseId>)
Parámetros requeridos
databaseId: Una ruta de referencia de cadena a una conexión de Base de datos en el proyecto actual
Descripción
Revierte la transacción actual y cierra la conexión de Base de datos.
La base de datos utilizada en esta llamada de función debe definirse como una conexión de base de datos en el proyecto actual. Para obtener más información, consulta las instrucciones sobre cómo insertar puntos de conexión en la sección Puntos de conexión en Jitterbit Script.
Nota
Los puntos de conexión creados con esta función se incluyen en reportes de uso de puntos de conexión y cuentan hacia tu licencia.
Ejemplos
// Revierte la transacción actual
DBRollbackTransaction("<TAG>endpoint:database/My Database</TAG>");
DBWrite
Declaración
void DBWrite(string source, string target, int mode, string tablename, string columnNames[, string columnKeynames, int skipLines, string dateFormat, string datetimeFormat])
Sintaxis
DBWrite(<source>, <target>, <mode>, <tablename>, <columnNames>[, <columnKeynames>, <skipLines>, <dateFormat>, <datetimeFormat>])
Descripción
Un alias para la función DBLoad. Consulta DBLoad para obtener más detalles.
Nota
Los puntos de conexión creados con esta función se incluyen en reportes de uso de puntos de conexión y cuentan hacia tu licencia.
SetDBInsert
Declaración
void SetDBInsert()
Sintaxis
SetDBInsert()
Descripción
Anula la configuración actual del modo insertar/actualizar a "insertar" para el registro actual. El valor devuelto es nulo.
Ejemplos
// Establece el modo insertar/actualizar a "insertar"
// para el registro actual
SetDBInsert();
SetDBUpdate
Declaración
void SetDBUpdate()
Sintaxis
SetDBUpdate()
Descripción
Anula la configuración actual del modo insertar/actualizar a "actualizar" para el registro actual. El valor devuelto es nulo.
Ejemplos
// Establece el modo insertar/actualizar a "actualizar"
// para el registro actual
SetDBUpdate();
SQLEscape
Declaración
string SQLEscape(string unescapedSQL[, bool escapeBackslash])
Sintaxis
SQLEscape(<unescapedSQL>[, <escapeBackslash>])
Parámetros requeridos
unescapedSQL: Una cadena SQL que se debe escapar
Parámetros opcionales
escapeBackslash: Indicador booleano que indica si las barras invertidas ("\") deben escaparse duplicándolas; el valor predeterminado esfalse
Descripción
Realiza el escape necesario de cadenas literales utilizadas en una declaración SQL.
Las cadenas utilizadas como constantes de caracteres en una declaración SQL utilizan una comilla simple (') como delimitador; si los datos reales contienen comillas simples, deben escaparse especificándolas dos veces. Este método escapa comillas simples siguiendo el estándar SQL reemplazando cada comilla simple (') con dos comillas simples (''). Si también deben escaparse caracteres de barra invertida, proporciona y establece el segundo parámetro en true.
Ejemplos
// 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
Declaración
void Unmap()
Sintaxis
Unmap()
Descripción
Para usar en asignaciones, esta función establece un campo de destino para tratarse como no asignado, eliminándolo de la salida. El valor devuelto es nulo.
Asignar un valor de origen null no es lo mismo que llamar a Unmap: un valor null se sigue escribiendo en el campo de salida, mientras que Unmap omite el campo completamente. Utiliza Unmap cuando el campo en sí debe estar ausente de la salida, no solo vacío.
Esta función tiene efecto solo cuando se devuelve directamente desde la expresión de asignación del propio campo de destino. Llamar a Unmap desde dentro de un script invocado por RunScript no tiene efecto en el campo, ya que RunScript devuelve el resultado del script llamado como una cadena en lugar de propagar la señal de no asignación nuevamente a la asignación. Con versiones de agentes 12.9 y posteriores, una llamada a RunScript anterior en la propia expresión de asignación del campo de destino no tiene esta limitación. En versiones anteriores de agentes, Unmap devuelve null en su lugar de no asignar el campo en este caso.
El comportamiento varía según el tipo de destino:
- JSON y XML: El campo o elemento se omite completamente. Si cada campo de un objeto JSON no está asignado, el objeto permanece en la salida como un
{}vacío en lugar de ser eliminado. - CSV: La columna no se elimina; el campo se escribe como un valor vacío en su lugar, ya que una fila CSV no puede omitir una columna posicional.
- XSD, ZIP y otros destinos XML definidos por esquema: El elemento se omite. Si cada hijo de un elemento padre no está asignado, el elemento padre también se omite (un elemento raíz con todos los campos no asignados se vuelve de autocierre), y esto se propaga a través de niveles anidados de un esquema jerárquico.
- Base de datos: El campo se excluye de la declaración
INSERTgenerada.
Ejemplos
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\>
Declaración
<SEQUENCE>
Sintaxis
<SEQUENCE>
Descripción
Para usar en asignaciones con bases de datos Oracle, esta función se utiliza cuando la tabla de destino contiene tablas vinculadas con una relación de clave principal/clave externa. En ese caso, asigna esto a las claves principales generadas por la base de datos Oracle.
Para bases de datos distintas de Oracle, usa la función <SQLIDENTITY> en su lugar.
Nota
En la sintaxis de esta función, los símbolos menor que ("<") y mayor que (">") forman parte de la sintaxis de la función.
Ejemplos
Si hay etiquetas <trans> presentes, <SEQUENCE> debe colocarse fuera de ellas de la siguiente manera:
<trans>
</trans>
<SEQUENCE>
<SQLIDENTITY\>
Declaración
<SQLIDENTITY>
Sintaxis
<SQLIDENTITY>
Descripción
Para usar en asignaciones con bases de datos que no sean Oracle, esta función se utiliza cuando la tabla de destino contiene tablas vinculadas con una relación de clave principal/clave externa. En ese caso, asigna esto a las claves principales generadas por la base de datos, como Identity en SQL Server o Serial en PostgreSQL. Para bases de datos Oracle, usa la función <SEQUENCE> en su lugar.
Nota
En la sintaxis de esta función, los símbolos menor que ("<") y mayor que (">") forman parte de la sintaxis de la función.
Ejemplos
Si hay etiquetas <trans> presentes, <SQLIDENTITY> debe colocarse fuera de ellas de la siguiente manera:
<trans>
</trans>
<SQLIDENTITY>
<UDF\>
Declaración
<UDF>string userDefinedFunction
Sintaxis
<UDF><userDefinedFunction>
Parámetros requeridos
userDefinedFunction: Una cadena que define una llamada a función definida por el usuario
Descripción
Agrega una función de base de datos definida por el usuario al inicio de una fórmula. El prefijo <UDF> se elimina de la expresión antes de pasarla. Ten en cuenta que se pueden usar etiquetas de apertura y cierre <trans> para indicar partes de la llamada a función que Jitterbit debe evaluar antes de pasar la expresión a una base de datos.
Nota
En la sintaxis de esta función, los símbolos menor que ("<") y mayor que (">") alrededor de <UDF> forman parte de la sintaxis de la función.
Ejemplos
// 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>)