
Mejor respuesta Marc , 19 noviembre 2016 - 11:41
Hola,
Aquí tienes una forma incluso ligeramente más simple de llamarlo.
CREATE OR ALTER PROCEDURE GENERA_SALIDA ( AGENTE VARCHAR(150) CHARACTER SET ISO8859_1 COLLATE ES_ES_CI_AI, PROVEEDOR VARCHAR(150) CHARACTER SET ISO8859_1 COLLATE ES_ES_CI_AI, ALMACEN INTEGER, ORDEN INTEGER, TIPO_ORDEN INTEGER, FACTURA VARCHAR(25), NCF VARCHAR(100), FECHA DATE, VME INTEGER, USUARIO VARCHAR(25), DEVICE VARCHAR(100), TALLER INTEGER, CONTACTO VARCHAR(150) CHARACTER SET ISO8859_1 COLLATE ES_ES_CI_AI, CORREO VARCHAR(150) CHARACTER SET ISO8859_1 COLLATE ES_ES_CI_AI, TELEFONO VARCHAR(10) CHARACTER SET ISO8859_1, AREA INTEGER) RETURNS ( ID INTEGER) AS BEGIN INSERT INTO SALIDAS_ALMACEN(SAL_NO,SAL_FECHA,SAL_AGENTE,SAL_PROVEEDOR,SAL_NCF_PROV,SAL_FACTURA,VEH_ID,SAL_OT_NO,SAL_OT_TIPO,USER_NAME,USER_DEVICE,SAL_ALMACEN,SAL_AREA,TA_ID,SAL_SUPLI_CONTACTO,SAL_SUPLI_MAIL,SAL_SUPLI_TEL) SELECT ultimo, :fecha, :agente,:proveedor,:ncf,:factura,:VME, :ORDEN,:TIPO_ORDEN,:usuario,:device,:almacen,:area,:taller,:contacto,:correo,:telefono) RETURNING SAL_ID INTO :id; FROM GETSALIDASID; END
En lugar de ejecutar el procedimiento almacenado y recuperar su parámetro de salida en una variable, lo tratamos como un dataset (esto es lo que hace el suspend en el primer procedimiento almacenado), de manera que puedes alimentar el insert del segundo SP directamente con un SELECT ULTIMO FROM GETSALIDASID, a ese parámetro de salida ULTIMO tratado si fuera como un campo cualquiera, le he añadido el resto de variables a insertar.
Ir al mensaje completo