Consulta SQLSERVER no funciona en JAVA

Iniciado por wilmer30, 6 Enero 2016, 16:15 PM

0 Miembros y 1 Visitante están viendo este tema.

wilmer30

Buenas,

Me estoy rompiendo la cabeza intentando resolver este problema. tengo este código:
//            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" +
//                    "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" +
//                    "case when exists \n" +
//                    "(select * from tab_detalleasignacion di \n" +
//                    "join tab_solicitud si on si.sol_id = di.sol_id \n" +
//                    "join tab_almacen ai on ai.al_id = di.al_id join tab_producto pin on pin.pro_id = ai.pro_id\n" +
//                    "where pin.igr_id = p.igr_id and si.usu_idempleado = "+usu_id+" and di.deta_estadoprenda = 1 and not exists (\n" +
//                    " select * from tab_detalleasignacion d2 \n" +
//                    " join tab_solicitud s2 on s2.sol_id = d2.sol_id \n" +
//                    " join tab_almacen a2 on a2.al_id = d2.al_id join tab_producto p2 on p2.pro_id = a2.pro_id\n" +
//                    " where p2.igr_id = p.igr_id and s2.usu_idempleado = "+usu_id+" and d2.deta_estadoprenda = 2)\n" +
//                    ") then 1\n" +
//                    "else 0 end restriccion\n" +
//                    "from tab_detalleasignacion d \n" +
//                    "JOIN tab_almacen a on a.al_id = d.al_id \n" +
//                    "JOIN tab_producto p on p.pro_id = a.pro_id\n" +
//                    "JOIN tab_tiporopaprenda tr ON a.trp_id = tr.trp_id\n" +
//                    "JOIN tab_solicitud s on s.sol_id = d.sol_id\n" +
//                    "where d.deta_estadoprenda = 1 AND a.al_estado = 1  and d.sol_id= "+ idsol;
           
            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" +
"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" +
"case when \n" +
" ((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" +
" join tab_solicitud s3 on d3.sol_id = s3.sol_id join tab_usuariohistorial h3 on h3.ush_id = s3.usu_idempleado \n" +
" where s3.usu_idempleado = "+usu_id+" and p3.igr_id = p.igr_id and d3.deta_estadoprenda = 2 group by p3.igr_id) \n" +
" < " +
" (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" +
" join tab_solicitud s3 on d3.sol_id = s3.sol_id join tab_usuariohistorial h3 on h3.ush_id = s3.usu_idempleado \n" +
" join tab_areatrabajocargo at3 on at3.car_id = h3.car_id\n" +
" join tab_ropatrabajo rt3 on rt3.tpe_id = at3.tpe_id and rt3.u_item = p3.pro_itemcode\n" +
" where s3.usu_idempleado = "+usu_id+" and p3.igr_id = p.igr_id and d3.deta_estadoprenda = 2))\n" +
"then 1" +
"else " +
" case when exists \n" +
" (select * from tab_detalleasignacion di \n" +
" join tab_solicitud si on si.sol_id = di.sol_id \n" +
" join tab_almacen ai on ai.al_id = di.al_id join tab_producto pin on pin.pro_id = ai.pro_id\n" +
" where pin.igr_id = p.igr_id and si.usu_idempleado = "+usu_id+" and di.deta_estadoprenda = 1 and not exists (\n" +
" select * from tab_detalleasignacion d2 \n" +
" join tab_solicitud s2 on s2.sol_id = d2.sol_id \n" +
" join tab_almacen a2 on a2.al_id = d2.al_id join tab_producto p2 on p2.pro_id = a2.pro_id\n" +
" where p2.igr_id = p.igr_id and s2.usu_idempleado = "+usu_id+" and d2.deta_estadoprenda = 2)\n" +
" ) then 1\n" +
" else 0\n" +
" end\n" +
"end restrinccion\n" +
"from tab_detalleasignacion d \n" +
"JOIN tab_almacen a on a.al_id = d.al_id \n" +
"JOIN tab_producto p on p.pro_id = a.pro_id\n" +
"JOIN tab_tiporopaprenda tr ON a.trp_id = tr.trp_id\n" +
"JOIN tab_solicitud s on s.sol_id = d.sol_id\n" +
"where d.deta_estadoprenda = 1 AND a.al_estado = 1  and d.sol_id= "+idsol;
           
            logger.info("despues de asignarwil: "+sql);
            PreparedStatement pst = this.getCn().prepareCall(sql);

Dejo la primera forma comentada (que si funciona pero no arroja los datos que necesito) y la segunda (que no funciona pero arroja los datos que si 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