Procedimiento en Postgre
Código:
en JavaCREATE OR REPLACE FUNCTION x.x(IN p_codigo_depto integer, IN p_codigo_linea integer, IN p_codigo_familia integer, IN p_codigo_sub_familia integer, IN p_nombre_producto character varying, IN p_descripcion_corta_producto character varying, IN p_descripcion_extendida_producto character varying, IN p_stock_minimo_producto numeric, IN p_stock_maximo_producto numeric, IN p_stock_critico_producto numeric, IN p_precio_venta_unitario numeric, IN p_pto_reorden numeric, IN p_activo character varying, IN p_unidad_por_embalaje numeric, IN p_publicar_web character varying, IN p_estado_producto character varying, OUT mensaje character varying) AS $BODY$ BEGIN INSERT INTO x.p ( codigo_producto, codigo_depto, codigo_linea, codigo_familia, codigo_sub_familia, nombre_producto, descripcion_corta_producto, descripcion_extendida_producto, stock_minimo_producto, stock_maximo_producto, stock_critico_producto, precio_venta_unitario, pto_reorden, activo, unidad_por_embalaje, publicar_web, estado_producto, fecha_creacion ) VALUES ( (select * from p.getcodigoproducto()), p_codigo_depto, p_codigo_linea, p_codigo_familia, p_codigo_sub_familia, p_nombre_producto, p_descripcion_corta_producto, p_descripcion_extendida_producto, p_stock_minimo_producto, p_stock_maximo_producto, p_stock_critico_producto, p_precio_venta_unitario, p_pto_reorden, p_activo, p_unidad_por_embalaje, p_publicar_web, p_estado_producto, date(now()) ); EXCEPTION WHEN OTHERS THEN mensaje := SQLERRM; RETURN; END;$BODY$ LANGUAGE 'plpgsql' VOLATILE;
Código:
al momento de ejecutare esta linea databaseManager.executePreparedCall();public boolean addProducto(DataProducto dtProducto)
{
boolean okAdd = false;
DatabaseManager databaseManager = new DatabaseManager();
try
{
databaseManager.getPooledConnection();
String transaccion = "{call x.x(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}";
databaseManager.getPreparedCall(transaccion);
databaseManager.setParamCall(1,Integer.parseInt(dtProducto.getCodigoDepto()));
databaseManager.setParamCall(2,Integer.parseInt(dtProducto.getCodigoLinea()));
databaseManager.setParamCall(3,Integer.parseInt(dtProducto.getCodigoFamilia()));
databaseManager.setParamCall(4,Integer.parseInt(dtProducto.getCodigoSubFamilia()));
databaseManager.setParamCall(5,dtProducto.getNombreProducto());
databaseManager.setParamCall(6,dtProducto.getDescripcionCortaProducto());
databaseManager.setParamCall(7,dtProducto.getDescripcionExtensaProducto());
databaseManager.setParamCall(8,dtProducto.getStockMinimoProducto());
databaseManager.setParamCall(9,dtProducto.getStockMaximoProducto());
databaseManager.setParamCall(10,dtProducto.getStockCriticoProducto());
databaseManager.setParamCall(11,dtProducto.getPrecioVentaUnitario());
databaseManager.setParamCall(12,dtProducto.getPuntoReorden());
databaseManager.setParamCall(13,dtProducto.getActivo());
databaseManager.setParamCall(14,dtProducto.getUnidadEmbalaje());
databaseManager.setParamCall(15,dtProducto.getPublicarWeb());
databaseManager.setParamCall(16,dtProducto.getEstado());
databaseManager.registerOutParameter(17,Types.VARCHAR);
databaseManager.executePreparedCall();
if(databaseManager.getCstmt().getString(17) != null)
{
String mensajeError = databaseManager.getCstmt().getString(17);
System.out.println("MENSAJE DE ERROR DE SP addProducto = " + mensajeError);
return false;
}
else
{
okAdd = true;
}
}
catch(Exception e)
{
System.out.println("Error ServicioProductoBean.addProducto()= " + e.getMessage());
}
finally
{
databaseManager.dropPooledConnection();
}
return okAdd;
}
se cae diciendo que la funcion no existe, al parecer es un problema de compatibilidad de tipos de datos pero no estoy seguro.
Ojala me puedan ayudar porfa

