Bueno hasta donde tengo entendido un procedimiento almacenado no te va a servir para lo que necesitas, que segun entiendo, es almacenar en el el query "largisimo", para ese proposito lo que te sirve es crear una vista en SQL server con el query complejo y luego desde Java la consultas con un query de una linea.
La creación de la vista para tu caso sería algo como
Código HTML:
CREATE VIEW mivista AS
SELECT
pelicula.nombre_pelicula, ciudad.nombre_ciudad, region.nombre_region,
cine.nombre_cine, sala.numero_sala, funcion.hora_funcion, horario.fecha_horario
FROM pelicula,ciudad,region,cine,sala,funcion,pelicula_sala,horario
WHERE (region.id_region=ciudad.id_region AND
cine.id_ciudad=ciudad.id_ciudad AND
cine.id_cine=sala.id_cine AND
sala.id_sala=pelicula_sala.id_sala AND
pelicula.id_pelicula=pelicula_sala.id_pelicula AND
horario.id_pelicula_sala=pelicula_sala.id_pelicula_sala AND
horario.id_funcion=funcion.id_funcion);
y luego desde Java tu consulta se reduciria a algo como:
Código HTML:
String SQL="SELECT * FROM mivista WHERE nombre_pelicula ='"+combo3.getSelectedItem()+"'";
Espero que sea de ayuda.