Ver Mensaje Individual
  #5 (permalink)  
Antiguo 02/03/2011, 16:34
osvier
 
Fecha de Ingreso: enero-2006
Mensajes: 293
Antigüedad: 18 años, 4 meses
Puntos: 4
Respuesta: Problema con consulta en sql

Puedes mandar 2 parametros a tu stored procedure (inicializados a un valor default). Si tienes problemas para entender la clausula where, avísame.

Código SQL:
Ver original
  1. ALTER PROCEDURE [dbo].[obtenerhorariopersonalcargo]
  2. @nombre VARCHAR(50) = NULL,
  3. @dni INT = 0
  4. AS
  5.  
  6.  
  7. SELECT (p.nombre +' '+ p.apellido)AS nombres, c.nombre, p.foto, d.descripcion, hpc.h_entrada, hpc.m_entrada, hpc.h_salida, hpc.m_salida,c.horas,p.nro FROM personal p
  8. INNER JOIN personalcargos pc ON p.id_personal = pc.id_personal
  9. INNER JOIN cargos c ON pc.id_cargo = c.id_cargo
  10. INNER JOIN horariopersonalcargos hpc ON c.id_cargo = hpc.id_cargo
  11. INNER JOIN dias d ON hpc.dia = d.dia
  12. WHERE (@nombre IS NOT NULL AND (p.apellido +' '+ p.nombre)=@nombre)
  13.  OR
  14. (@dni > 0 AND  @dni= p.nro)

Cuando mandes llamar el stored procedure, puedes mandarle solo el parametro int @dni.. el stored procedure esta preparado para NO recibir el segundo parametro.. y el where esta preparado para hacer el filtro SOLO por el parametro que recibio.

Código SQL:
Ver original
  1. EXEC obtenerhorariopersonalcargo @dni = 4

Código SQL:
Ver original
  1. EXEC obtenerhorariopersonalcargo @nombre = 'juan'

con esta logica puede ser que lo mandes SIN parametros. En ese caso talvez fuera necesario que hicieras una validación. Si los dos parametros vienen nullos.. salir del SP.