Altova MapForce 2024 Professional Edition

En este ejemplo explicamos cómo insertar una clave (ID) generada por un procedimiento almacenado en otra tabla, con ayuda de las relaciones locales.

 

Primero vamos a crear el procedimiento almacenado de ejemplo en la base de datos "AdventureWorks". Para ello, ejecute el siguiente script en la BD. Puede hacerlo desde una ventana de consultas de la aplicación de Microsoft SQL Server Management Studio o directamente desde la pestaña Consulta de la BD de MapForce (consulte Examinar y consultar bases de datos). En ambos casos, asegúrese de que su cuenta de usuario de la base de datos tiene permisos para crear procedimientos almacenados.

 

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

 

El procedimiento almacenado anterior toma dos parámetros (INSERT) como entrada y ejecuta una operación INSERT en la tabla ProductModel. Entonces devuelve el ID generado @ProductModelID como parámetro de salida. El requisito es insertar el @ProductModelID devuelto por el procedimiento almacenado en la tabla ProductModelIllustration.

 

Para crear una asignación que cumpla con el requisito anterior siga los pasos que describimos a continuación.

 

1.Conéctese a la base de datos "AdventureWorks" desde MapForce, como se describe en el apartado Agregar procedimientos almacenados a la asignación. Asegúrese de que su cuenta de usuario de la base de datos tiene permisos para crear procedimientos almacenados.

2.Cuando la aplicación solicite que elija objetos de la BD, seleccione la tabla ProductModelIllustration y el procedimiento almacenado uspAddProductModelEx.

mf_sp_26

3.Haga clic en el botón para mostrar el menú contextual (mf_ic_storedproc_menu), junto al procedimiento almacenado, y seleccione Mostrar nodos como destino. Ahora el procedimiento almacenado aparece como componente de destino en la aplicación, donde aparecen a la izquierda los parámetros de entrada.

mf_sp_27

4.Otra opción, si quiere ejecutar el procedimiento almacenado dentro de una transacción, es volver a hacer clic en el botón para mostrar el menú contextual (mf_ic_storedproc_menu), seleccionar Configuración del procedimiento y luego marcar la casilla Usar transacciones. Al definir la transacción para el procedimiento almacenado se asegura de que se obtiene la clave y se inserta el registro durante la misma transacción.

5.Haga clic con el botón derecho en la barra del título del componente de BD y seleccione Componente | Agregar, quitar o editar objetos de la base de datos del menú contextual.

6.Haga clic en Agregar o editar relaciones y después en Agregar relación. Defina las relaciones como se muestra a continuación.

mf_sp_28

7.Haga clic en Aceptar para cerrar el cuadro de diálogo. Observe que la tabla ProductModelIllustration ahora aparece como secundaria del procedimiento almacenado. El parámetro de salida del procedimiento almacenado (@ProductModelID) se muestra como un indicador que se usará en la relación local, pero no tiene conectores de entrada ni de salida.

mf_sp_29

8.En este ejemplo el parámetro @Inst es de tipo XML. Haga clic con el botón derecho en el parámetro @Inst del componente y seleccione Asignar esquema XML al campo en el menú contextual. A continuación, seleccione el esquema Production.ManuNstructionsSchemaCollection de la BD. Cuando la aplicación solicite que seleccione un elemento raíz, deje el valor predeterminado como está y haga clic en Aceptar. Para más información sobre la asignación de datos a campos XML de BD consulte el apartado Asignaciones entre datos XML y campos de BD.

mf_sp_30

9.Añada el componente de origen que proporciona los datos que se deben insertar en la BD. En este ejemplo los datos se origen vienen dados por constantes; sin embargo, cualquier otro componente de origen compatible con MapForce podría servir como datos de entrada. Para más información sobre constantes consulte el apartado Agregar una constante a una asignación de datos.

mf_sp_31

Esta asignación actualiza una base de datos, por lo que no existe una vista previa de sus resultados, como ocurre con otras asignaciones. Al hacer clic en el botón Resultados, en la pestaña correspondiente aparecerá una especie de SQL con pistas sobre cómo se modificará la BD. Si habilita las transacciones, estas ocurrirán como describen los comentarios de la pestaña Resultados.

mf_sp_32

Esa especie de SQL que aparece en el panel Resultados no muestra los comandos reales de las transacciones, sino solo pistas (como comentarios). Los comandos SQL de verdad se envían a la API de BD subyacente.

 

Puede ejecutar la asignación en la BD de dos maneras:

 

En el menú Resultados, haga clic en Ejecutar script SQL.

Haga clic en el botón de la barra de herramientas Ejecutar script SQL mf_ic_run-sql.

© 2017-2023 Altova GmbH