Altova MapForce 2025 Professional Edition

Los procedimientos almacenados son programas que se alojan y ejecutan en un servidor de bases de datos. Los procedimientos almacenados pueden ser llamados por aplicaciones cliente y suelen estar escritos en algún dialecto extendido de SQL. Algunas bases de datos también admiten implementaciones en Java, .NET CLR y otros lenguajes de programación.

 

Entre los usos más frecuentes de los procedimientos almacenados se encuentran las consultas de la BD y la devolución de datos al cliente de llamada o la modificación de bases de datos tras la validación de los parámetros de entrada. Los procedimientos almacenados también pueden realizar otras acciones fuera de la base de datos, como enviar correos electrónicos.

 

Un procedimiento almacenado puede tener cero o más parámetros de entrada y salida y puede devolver cero o más conjuntos de datos valor de retorno predeterminado. En consecuencia, en MapForce puede llamar a un procedimiento almacenado de varias formas:

 

Para obtener datos, como si fuera un componente de origen de la asignación. Esto se aplica a procedimientos que no toman parámetros de entrada. Cuando se ejecuta la asignación se llama al procedimiento y este devuelve un conjunto de datos o parámetros de salida. Puede asignar el conjunto de datos o los parámetros de salida, o ambos, a cualquier otro tipo de datos compatible con MapForce. Para ver un ejemplo, consulte Procedimientos almacenados como origen de datos.

Llamar a un procedimiento almacenado como si fuera una llamada a una función, con parámetros. En este caso se suministran todos los parámetros de entrada necesarios desde la aplicación y también se puede asignar el conjunto de datos devuelto, o los parámetros de salida, o ambos, a otros destinos compatibles con MapForce. Para ver un ejemplo consulte Procedimientos almacenados con entrada y salida.

Llamar a un procedimiento almacenado como si fuera un componente de destino de la asignación. Un caso de uso típico sería llamar a un procedimiento almacenado con parámetros para modificar la base de datos (por ejemplo, insertar un registro). Este enfoque es adecuado si no necesita resultados del procedimiento almacenado. Además, en este enfoque puede ejecutar el procedimiento almacenado dentro de una transacción de base de datos que puede revertirse en caso de error. Para ver un ejemplo, consulte Procedimientos almacenados en componentes de destino.

 

También puede haber casos en los que necesite llamar a procedimientos almacenados o ejecutar acciones en tablas de bases de datos en un orden concreto (primero insertar, luego actualizar, etc.). Por ejemplo, puede que necesite pasar el parámetro de salida de un procedimiento almacenado a otro procedimiento almacenado. O puede que necesite combinar los datos devueltos por un procedimiento almacenado con datos de una tabla. Ese tipo de acciones se pueden ejecutar con ayuda de las relaciones locales definidas en MapForce, incluso si la base de datos subyacente no aplica relaciones de claves principales/foráneas entre tablas. Para más información, consulte Procedimientos almacenados y relaciones locales.

 

Nota:en este apartado usaremos Microsoft SQL Server 2016 y la base de datos "AdventureWorks 2016" para explicar cómo se implementan los procedimientos almacenados en MapForce. Puede descargarse de https://github.com/Microsoft/sql-server-samples/releases/tag/adventureworks.

 

Notas sobre compatibilidad

Los procedimientos almacenados solo pueden utilizarse en el motor de ejecución BUILT-IN. No se admite la generación de código en C++, C# o Java.

Tipos de parámetros de entrada/salida: por lo general no son compatibles los tipos definidos por el usuario, tipos cursor, tipos variant y muchos otros tipos de datos de BD menos comunes (como tipos matriz, geometry, CLR, etc.).

No es compatible la sobrecarga de procedimientos y funciones (varias definiciones de rutinas con el mismo nombre y parámetros diferentes).

Algunas bases de datos admiten el uso de valores predeterminados en los parámetros de entrada, pero MapForce no lo admite por ahora. No puede omitir parámetros de entrada en la asignación para usar valores predeterminados.

Los procedimientos almacenados que devuelven varios conjuntos de registros son compatibles o no dependiendo de la combinación de controlador y API de base de datos (ODBC/ADO/ADO.NET/JDBC). Solamente son compatibles los procedimientos que devuelven el mismo número de conjuntos de registro con una estructura de columnas fijas.

Recomendamos utilizar siempre que se pueda la versión más reciente del controlador nativo de BD que mantenga el proveedor de la BD. No recomendamos utilizar controladores puente como ODBC to ADO Bridge ni ODBC to JDBC Bridge.

También puede habilitar las transacciones de BD para procedimientos almacenados a los que se llama como datos de destino (consulte Procedimientos almacenados en componentes de destino). Las transacciones no son compatibles con los procedimientos almacenados a los que se llama como fuente de datos (sin parámetros de entrada) o con aquellos a los que se llama como función (con parámetros de entrada y de salida).

 

La siguiente tabla muestra información específica de cada una de las BD compatibles.

 

Base de datos

Notas sobre compatibilidad

Access

Los procedimientos almacenados de las BD de Microsoft Access tienen una funcionalidad muy limitada y no son compatibles con MapForce.

 

DB2

Compatibles con MapForce: procedimientos almacenados, funciones escalares y funciones con valores de tabla

Los valores devueltos de los procedimientos almacenados de DB2 no son compatibles porque no pueden leerse a través de las API de base de datos utilizadas en MapForce.

Las funciones con valores de fila (RETURNS ROW) no son compatibles.

Se recomienda instalar como mínimo "IBM_DB2 9.7 Fix Pack 3a" para evitar que ocurra un error confirmado con el driver JDBC al leer errores/advertencias tras la ejecución. Esto también soluciona un problema con el proveedor de ADO que provoca que falte una fila del conjunto de resultados.

 

Firebird

Compatibles con MapForce: procedimientos almacenados y funciones con valores de tabla

 

Informix

Compatibles con MapForce: procedimientos almacenados y funciones con valores de tabla

 

MariaDB

Compatibles con MapForce: procedimientos almacenados y funciones escalares

 

MySQL

Compatibles con MapForce: procedimientos almacenados y funciones escalares

MySQL incluye total compatibilidad para procedimientos almacenados y funciones a partir de la versión 5.5. Si usa una versión anterior, la funcionalidad será limitada en MapForce.

 

Oracle

Compatibles con MapForce: procedimientos almacenados, funciones escalares y funciones con valores de tabla Esto incluye los procedimientos almacenados y las funciones independientes, así como los definidos dentro de un paquete Oracle.

Se recomienda usar un controlador Oracle nativo en lugar del proveedor Microsoft OLE DB Provider for Oracle.

Oracle tiene una forma especial de devolver conjuntos de resultados al cliente que consiste en usar parámetros de salida de tipo REF CURSOR. Esto es compatible con MapForce en el caso de los procedimientos almacenados, pero no en el de las funciones. Por tanto, los nombres y el número de los conjuntos de registros siempre son fijos para procedimientos almacenados de Oracle.

 

PostgreSQL

Compatibles con MapForce: funciones escalares, funciones con valores de fila y funciones con valores de tabla

En PostgreSQL, cualquier parámetro de salida definido en una función describe las columnas del conjunto de resultados. Esta información se utiliza automáticamente en MapForce (no es necesaria la detección por ejecución ni la entrada manual de conjuntos de registros). Los parámetros de tipo refcursor no son compatibles.

 

Progress OpenEdge

Compatibles con MapForce: procedimientos almacenados

 

SQL Server

Compatibles con MapForce: procedimientos almacenados, funciones escalares y funciones con valores de tabla

Para obtener información sobre los proveedores ADO disponibles, consulte Conexión ADO.

La API de ADO tiene algunas limitaciones de compatibilidad con algunos tipos de datos introducidos con SQL Server 2008 (datetime2, datetimeoffset). Si detecta problemas de truncamiento de datos con estos tipos temporales cuando use ADO con SQL Server Native Client, puede establecer el argumento de cadena de conexión DataTypeCompatibility=80 o usar ODBC.

Los procedimientos de SQL Server tienen un parámetro de rendimiento implícito de tipo int null que está disponible para asignaciones. Si el procedimiento omite una instrucción RETURN el valor resultante es 0.

 

SQLite

SQLite no usa procedimientos almacenados.

 

Teradata

Compatibles con MapForce: procedimientos almacenados, macros

Las funciones escalares, las funciones agregadas y las funciones de tabla no son compatibles

Problema conocido: el controlador ODBC de Teradata se niega a rellenar los valores de los parámetros de salida después de una llamada a un procedimiento.

 

 

© 2018-2024 Altova GmbH