Código SQL:
Como veran consulto cada dato que necesito y lo guardo dentro de una Var, ahora el procedure lo ejecuto asi desde un BATVer original
SET TERM ^ ; CREATE OR ALTER PROCEDURE indicadores_ventas_por_producto (INICIAL DATE, FINAL DATE) RETURNS (FRANQ INTEGER, TE_CANT INTEGER, TE_MONTO DOUBLE PRECISION, ENSREG_CANT INTEGER, ENSREG_MONTO DOUBLE PRECISION, ENSGDE_CANT INTEGER, ENSGDE_MONTO DOUBLE PRECISION, SAND_CANT INTEGER, SAND_MONTO DOUBLE PRECISION, POST_CANT INTEGER, POST_MONTO DOUBLE PRECISION, CREM_CANT INTEGER, CREM_MONTO DOUBLE PRECISION, MINIS_CANT INTEGER, MINIS_MONTO DOUBLE PRECISION, ADC_CANT INTEGER, ADC_MONTO DOUBLE PRECISION, DESA_CANT INTEGER, DESA_MONTO DOUBLE PRECISION, WRAP_ENS INTEGER, WRAP_SUB INTEGER, FEC_REG DATE ) AS BEGIN BEGIN /* Variable de la Franquicia */ FRANQ = 14; TE_CANT = 0; TE_MONTO = 0; ENSREG_CANT = 0; ENSREG_MONTO = 0; ENSGDE_CANT = 0; ENSGDE_MONTO = 0; SAND_CANT = 0; SAND_MONTO = 0; POST_CANT = 0; POST_MONTO = 0; CREM_CANT = 0; CREM_MONTO = 0; MINIS_CANT = 0; MINIS_MONTO = 0; ADC_CANT = 0; ADC_MONTO = 0; DESA_CANT = 0; DESA_MONTO = 0; WRAP_ENS = 0; WRAP_SUB = 0; FEC_REG = :INICIAL; SELECT (SUM(IIF(VENTAS.tipo_documento = 'FAC',ventas_detalles.CANTIDAD,0))-SUM(IIF(VENTAS.tipo_documento = 'DEV',ventas_detalles.CANTIDAD,0))) AS cantidad, (SUM(IIF(VENTAS.tipo_documento = 'FAC',ventas_detalles.total_base_imponible,0))-SUM(IIF(VENTAS.tipo_documento = 'DEV',ventas_detalles.total_base_imponible,0))) AS monto FROM ventas_detalles JOIN ventas ON VENTAS_DETALLES.CORRELATIVO_PRINCIPAL=ventas.CORRELATIVO WHERE (VENTAS.FECHA_EMISION BETWEEN :INICIAL AND :FINAL) AND (VENTAS_DETALLES.PRODUCTO_NOMBRE LIKE 'TE %') INTO :TE_CANT, :TE_MONTO; SELECT (SUM(IIF(VENTAS.tipo_documento = 'FAC',ventas_detalles.CANTIDAD,0))-SUM(IIF(VENTAS.tipo_documento = 'DEV',ventas_detalles.CANTIDAD,0))) AS cantidad, (SUM(IIF(VENTAS.tipo_documento = 'FAC',ventas_detalles.total_base_imponible,0))-SUM(IIF(VENTAS.tipo_documento = 'DEV',ventas_detalles.total_base_imponible,0))) AS monto FROM ventas_detalles JOIN ventas ON VENTAS_DETALLES.CORRELATIVO_PRINCIPAL=ventas.CORRELATIVO JOIN PRODUCTOS ON VENTAS_DETALLES.PRODUCTO_CODIGO=productos.CODIGO_PRODUCTO WHERE (VENTAS.FECHA_EMISION BETWEEN :INICIAL AND :FINAL) AND (PRODUCTOS.DEPARTAMENTO_CODIGO='101') INTO :ENSREG_CANT, :ENSREG_MONTO; SELECT (SUM(IIF(VENTAS.tipo_documento = 'FAC',ventas_detalles.CANTIDAD,0))-SUM(IIF(VENTAS.tipo_documento = 'DEV',ventas_detalles.CANTIDAD,0))) AS cantidad, (SUM(IIF(VENTAS.tipo_documento = 'FAC',ventas_detalles.total_base_imponible,0))-SUM(IIF(VENTAS.tipo_documento = 'DEV',ventas_detalles.total_base_imponible,0))) AS monto FROM ventas_detalles JOIN ventas ON VENTAS_DETALLES.CORRELATIVO_PRINCIPAL=ventas.CORRELATIVO JOIN PRODUCTOS ON VENTAS_DETALLES.PRODUCTO_CODIGO=productos.CODIGO_PRODUCTO WHERE (VENTAS.FECHA_EMISION BETWEEN :INICIAL AND :FINAL) AND (PRODUCTOS.DEPARTAMENTO_CODIGO='10') INTO :ENSGDE_CANT, :ENSGDE_MONTO; SELECT (SUM(IIF(VENTAS.tipo_documento = 'FAC',ventas_detalles.CANTIDAD,0))-SUM(IIF(VENTAS.tipo_documento = 'DEV',ventas_detalles.CANTIDAD,0))) AS cantidad, (SUM(IIF(VENTAS.tipo_documento = 'FAC',ventas_detalles.total_base_imponible,0))-SUM(IIF(VENTAS.tipo_documento = 'DEV',ventas_detalles.total_base_imponible,0))) AS monto FROM ventas_detalles JOIN ventas ON VENTAS_DETALLES.CORRELATIVO_PRINCIPAL=ventas.CORRELATIVO JOIN PRODUCTOS ON VENTAS_DETALLES.PRODUCTO_CODIGO=productos.CODIGO_PRODUCTO WHERE (VENTAS.FECHA_EMISION BETWEEN :INICIAL AND :FINAL) AND (PRODUCTOS.DEPARTAMENTO_CODIGO='06') INTO :SAND_CANT, :SAND_MONTO; SELECT (SUM(IIF(VENTAS.tipo_documento = 'FAC',ventas_detalles.CANTIDAD,0))-SUM(IIF(VENTAS.tipo_documento = 'DEV',ventas_detalles.CANTIDAD,0))) AS cantidad, (SUM(IIF(VENTAS.tipo_documento = 'FAC',ventas_detalles.total_base_imponible,0))-SUM(IIF(VENTAS.tipo_documento = 'DEV',ventas_detalles.total_base_imponible,0))) AS monto FROM ventas_detalles JOIN ventas ON VENTAS_DETALLES.CORRELATIVO_PRINCIPAL=ventas.CORRELATIVO JOIN PRODUCTOS ON VENTAS_DETALLES.PRODUCTO_CODIGO=productos.CODIGO_PRODUCTO WHERE (VENTAS.FECHA_EMISION BETWEEN :INICIAL AND :FINAL) AND (PRODUCTOS.DEPARTAMENTO_CODIGO='11') INTO :POST_CANT, :POST_MONTO; SELECT (SUM(IIF(VENTAS.tipo_documento = 'FAC',ventas_detalles.CANTIDAD,0))-SUM(IIF(VENTAS.tipo_documento = 'DEV',ventas_detalles.CANTIDAD,0))) AS cantidad, (SUM(IIF(VENTAS.tipo_documento = 'FAC',ventas_detalles.total_base_imponible,0))-SUM(IIF(VENTAS.tipo_documento = 'DEV',ventas_detalles.total_base_imponible,0))) AS monto FROM ventas_detalles JOIN ventas ON VENTAS_DETALLES.CORRELATIVO_PRINCIPAL=ventas.CORRELATIVO WHERE (VENTAS.FECHA_EMISION BETWEEN :INICIAL AND :FINAL) AND (VENTAS_DETALLES.PRODUCTO_NOMBRE = 'CREMA DEL DIA') INTO :CREM_CANT, :CREM_MONTO; SELECT (SUM(IIF(VENTAS.tipo_documento = 'FAC',ventas_detalles.CANTIDAD,0))-SUM(IIF(VENTAS.tipo_documento = 'DEV',ventas_detalles.CANTIDAD,0))) AS cantidad, (SUM(IIF(VENTAS.tipo_documento = 'FAC',ventas_detalles.total_base_imponible,0))-SUM(IIF(VENTAS.tipo_documento = 'DEV',ventas_detalles.total_base_imponible,0))) AS monto FROM ventas_detalles JOIN ventas ON VENTAS_DETALLES.CORRELATIVO_PRINCIPAL=ventas.CORRELATIVO JOIN PRODUCTOS ON VENTAS_DETALLES.PRODUCTO_CODIGO=productos.CODIGO_PRODUCTO WHERE (VENTAS.FECHA_EMISION BETWEEN :INICIAL AND :FINAL) AND (PRODUCTOS.DEPARTAMENTO_CODIGO='05') INTO :MINIS_CANT, :MINIS_MONTO; SELECT (SUM(IIF(VENTAS.tipo_documento = 'FAC',ventas_detalles.CANTIDAD,0))-SUM(IIF(VENTAS.tipo_documento = 'DEV',ventas_detalles.CANTIDAD,0))) AS cantidad, (SUM(IIF(VENTAS.tipo_documento = 'FAC',ventas_detalles.total_base_imponible,0))-SUM(IIF(VENTAS.tipo_documento = 'DEV',ventas_detalles.total_base_imponible,0))) AS monto FROM ventas_detalles JOIN ventas ON VENTAS_DETALLES.CORRELATIVO_PRINCIPAL=ventas.CORRELATIVO JOIN PRODUCTOS ON VENTAS_DETALLES.PRODUCTO_CODIGO=productos.CODIGO_PRODUCTO WHERE (VENTAS.FECHA_EMISION BETWEEN :INICIAL AND :FINAL) AND (PRODUCTOS.DEPARTAMENTO_CODIGO='09') INTO :ADC_CANT, :ADC_MONTO; SELECT (SUM(IIF(VENTAS.tipo_documento = 'FAC',ventas_detalles.CANTIDAD,0))-SUM(IIF(VENTAS.tipo_documento = 'DEV',ventas_detalles.CANTIDAD,0))) AS cantidad, (SUM(IIF(VENTAS.tipo_documento = 'FAC',ventas_detalles.total_base_imponible,0))-SUM(IIF(VENTAS.tipo_documento = 'DEV',ventas_detalles.total_base_imponible,0))) AS monto FROM ventas_detalles JOIN ventas ON VENTAS_DETALLES.CORRELATIVO_PRINCIPAL=ventas.CORRELATIVO JOIN PRODUCTOS ON VENTAS_DETALLES.PRODUCTO_CODIGO=productos.CODIGO_PRODUCTO WHERE (VENTAS.FECHA_EMISION BETWEEN :INICIAL AND :FINAL) AND (PRODUCTOS.DEPARTAMENTO_CODIGO='12') INTO :DESA_CANT, :DESA_MONTO; SELECT (SUM(IIF(VENTAS.tipo_documento = 'FAC' AND PRODUCTOS.CODIGO_PRODUCTO = '12019',ventas_detalles.CANTIDAD,0))-SUM(IIF(VENTAS.tipo_documento = 'DEV' AND PRODUCTOS.CODIGO_PRODUCTO = '12019',ventas_detalles.CANTIDAD,0))) AS wrapENS, (SUM(IIF(VENTAS.tipo_documento = 'FAC' AND PRODUCTOS.CODIGO_PRODUCTO = '12020',ventas_detalles.CANTIDAD,0))-SUM(IIF(VENTAS.tipo_documento = 'DEV' AND PRODUCTOS.CODIGO_PRODUCTO = '12020',ventas_detalles.CANTIDAD,0))) AS wrapSAN FROM ventas_detalles JOIN ventas ON VENTAS_DETALLES.CORRELATIVO_PRINCIPAL=ventas.CORRELATIVO JOIN PRODUCTOS ON VENTAS_DETALLES.PRODUCTO_CODIGO=productos.CODIGO_PRODUCTO WHERE (VENTAS.FECHA_EMISION BETWEEN '2012.12.01' AND '2012.12.31') INTO :WRAP_ENS, :WRAP_SUB; SUSPEND; END END ^ SET TERM ; ^
"isql HOST:"C:\VALERY_POS\datos\valery.mdf" -user 'SYSDBA' -password 'masterkey' -i procedure_producots.sql"
y el .SQL
"delete from numeros;
commit;
execute procedure indicadores_ventas_por_producto('2013.01.01','2013 .01.31');
commit;
quit;"
Como puedo hacer para que el procedure me Retorne algo como
"INSERT INTO indicadores_ventas_xproducto(ID_FRANQUICIA,TE_CANT ,TE_MONTO,ENSREG_CANT,ENSREG_MONTO,ENSGDE_CANT,ENS GDE_MONTO,SAND_CANT,SAND_MONTO,POST_CANT,POST_MONT O,CREM_CANT,CREM_MONTO,MINIS_CANT,MINIS_MONTO,ADC_ CANT,ADC_MONTO,DESA_CANT,DESA_MONTO,WRAP_ENS,WRAP_ SUB,FEC_REG)
VALUES(:FRANQ,:TE_CANT,:TE_MONTO,:ENSREG_CANT,:ENS REG_MONTO,:ENSGDE_CANT,:ENSGDE_MONTO,:SAND_CANT,:S AND_MONTO,:POST_CANT,:POST_MONTO,:CREM_CANT,:CREM_ MONTO,:MINIS_CANT,:MINIS_MONTO,:ADC_CANT,:ADC_MONT O,:DESA_CANT,:DESA_MONTO,:WRAP_ENS,:WRAP_SUB,:FEC_ REG);"
y dicha cadena poderla leer desde el bat? alguna idea?