Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/01/2016, 09:01
wilmer30
 
Fecha de Ingreso: enero-2010
Mensajes: 491
Antigüedad: 15 años
Puntos: 12
Ejecucion de consulta sqlserver no funciona en JAVA

Buenas,

Me estoy rompiendo la cabeza intentando resolver este problema. tengo este código:

Código Java:
Ver original
  1. //            sql = "select p.igr_id,a.al_id,a.ubi_id,p.pro_itemname,pro_itemcode,p.pro_unidad,pro_color,d.deta_id,d.deta_cantidadsolicitada, \n" +
  2. //                    "p.pro_descripcion, p.pro_genero, p.pro_talla, p.pro_logo,p.pro_material,p.pro_vidautil,a.al_cantidad,a.al_costo,tr.trp_nombre,\n" +
  3. //                    "case when exists \n" +
  4. //                    "(select * from tab_detalleasignacion di \n" +
  5. //                    "join tab_solicitud si on si.sol_id = di.sol_id \n" +
  6. //                    "join tab_almacen ai on ai.al_id = di.al_id join tab_producto pin on pin.pro_id = ai.pro_id\n" +
  7. //                    "where pin.igr_id = p.igr_id and si.usu_idempleado = "+usu_id+" and di.deta_estadoprenda = 1 and not exists (\n" +
  8. //                    " select * from tab_detalleasignacion d2 \n" +
  9. //                    " join tab_solicitud s2 on s2.sol_id = d2.sol_id \n" +
  10. //                    " join tab_almacen a2 on a2.al_id = d2.al_id join tab_producto p2 on p2.pro_id = a2.pro_id\n" +
  11. //                    " where p2.igr_id = p.igr_id and s2.usu_idempleado = "+usu_id+" and d2.deta_estadoprenda = 2)\n" +
  12. //                    ") then 1\n" +
  13. //                    "else 0 end restriccion\n" +
  14. //                    "from tab_detalleasignacion d \n" +
  15. //                    "JOIN tab_almacen a on a.al_id = d.al_id \n" +
  16. //                    "JOIN tab_producto p on p.pro_id = a.pro_id\n" +
  17. //                    "JOIN tab_tiporopaprenda tr ON a.trp_id = tr.trp_id\n" +
  18. //                    "JOIN tab_solicitud s on s.sol_id = d.sol_id\n" +
  19. //                    "where d.deta_estadoprenda = 1 AND a.al_estado = 1  and d.sol_id= "+ idsol;
  20.            
  21.             sql = "select p.igr_id,a.al_id,a.ubi_id,p.pro_itemname,pro_itemcode,p.pro_unidad,pro_color,d.deta_id,d.deta_cantidadsolicitada, \n" +
  22. "p.pro_descripcion, p.pro_genero, p.pro_talla, p.pro_logo,p.pro_material,p.pro_vidautil,a.al_cantidad,a.al_costo,tr.trp_nombre,\n" +
  23. "case when \n" +
  24. "   ((select COUNT(p3.igr_id) total from tab_detalleasignacion d3 join tab_almacen a3 on a3.al_id = d3.al_id join tab_producto p3 on p3.pro_id = a3.pro_id\n" +
  25. "   join tab_solicitud s3 on d3.sol_id = s3.sol_id join tab_usuariohistorial h3 on h3.ush_id = s3.usu_idempleado \n" +
  26. "   where s3.usu_idempleado = "+usu_id+" and p3.igr_id = p.igr_id and d3.deta_estadoprenda = 2 group by p3.igr_id) \n" +
  27. "   < " +
  28. "   (select rt3.u_cantidad from tab_detalleasignacion d3 join tab_almacen a3 on a3.al_id = d3.al_id join tab_producto p3 on p3.pro_id = a3.pro_id\n" +
  29. "   join tab_solicitud s3 on d3.sol_id = s3.sol_id join tab_usuariohistorial h3 on h3.ush_id = s3.usu_idempleado \n" +
  30. "   join tab_areatrabajocargo at3 on at3.car_id = h3.car_id\n" +
  31. "   join tab_ropatrabajo rt3 on rt3.tpe_id = at3.tpe_id and rt3.u_item = p3.pro_itemcode\n" +
  32. "   where s3.usu_idempleado = "+usu_id+" and p3.igr_id = p.igr_id and d3.deta_estadoprenda = 2))\n" +
  33. "then 1" +
  34. "else " +
  35. "   case when exists \n" +
  36. "   (select * from tab_detalleasignacion di \n" +
  37. "   join tab_solicitud si on si.sol_id = di.sol_id \n" +
  38. "   join tab_almacen ai on ai.al_id = di.al_id join tab_producto pin on pin.pro_id = ai.pro_id\n" +
  39. "   where pin.igr_id = p.igr_id and si.usu_idempleado = "+usu_id+" and di.deta_estadoprenda = 1 and not exists (\n" +
  40. "       select * from tab_detalleasignacion d2 \n" +
  41. "       join tab_solicitud s2 on s2.sol_id = d2.sol_id \n" +
  42. "       join tab_almacen a2 on a2.al_id = d2.al_id join tab_producto p2 on p2.pro_id = a2.pro_id\n" +
  43. "       where p2.igr_id = p.igr_id and s2.usu_idempleado = "+usu_id+" and d2.deta_estadoprenda = 2)\n" +
  44. "   ) then 1\n" +
  45. "   else 0\n" +
  46. "   end\n" +
  47. "end restrinccion\n" +
  48. "from tab_detalleasignacion d \n" +
  49. "JOIN tab_almacen a on a.al_id = d.al_id \n" +
  50. "JOIN tab_producto p on p.pro_id = a.pro_id\n" +
  51. "JOIN tab_tiporopaprenda tr ON a.trp_id = tr.trp_id\n" +
  52. "JOIN tab_solicitud s on s.sol_id = d.sol_id\n" +
  53. "where d.deta_estadoprenda = 1 AND a.al_estado = 1  and d.sol_id= "+idsol;
  54.            
  55.             logger.info("despues de asignar: "+sql);
  56.             PreparedStatement pst = this.getCn().prepareCall(sql);
  57.             st = pst.executeQuery();
Dejo la primera forma comentada (que si funciona pero no arroja los datos que necesito) y la segunda (no funciona pero ejecuto la consulta genera en el log y si arroja los datos que necesito).

Si copio la consulta de la segunda forma al sqlserver y lo ejecuto SI FUNCIONA, pero en JAVA (trabajo con JSF) me dice que no existen registros. Los campos enviados son identicos entre la primera y la segunda forma. Por que la segunda forma no funciona.

AYUDA POR FAVOR