SQL Server - Stored procedure con parametro opcional

 
Vista:
sin imagen de perfil

Stored procedure con parametro opcional

Publicado por Antonio (1 intervención) el 29/05/2018 18:45:22
Tengo este procedure, quiero poder enviar o no el parametro @EMPLEADO

Por Ejemplo: Si corro esto, debería obtener todos los valores que tengan Pedro

1
EXEC Fichada_por_sucursal '2018-05-01','2018-05-05',' Pedro'

I si corro esto, Deberia mostrarme todos los valores
1
EXEC Fichada_por_sucursal '2018-05-01','2018-05-05',''

Stored procedure:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
ALTER  PROCEDURE Fichada_por_sucursal2 (
@fecha1 date,
@fecha2 date,
@EMPLEADO NVARCHAR(100))
 
 
AS
 
select CASE DATENAME(dw, a.fecha )
WHEN 'Monday' then 'Lunes'
WHEN 'Tuesday ' then 'Martes'
WHEN 'Wednesday ' then 'Miércoles'
WHEN 'Thursday' then 'Jueves'
WHEN 'Friday' then 'Viernes'
WHEN 'Saturday' then 'Sábado'
ELSE 'Domingo' END
as Fechadia,
a.legajo,c.nombres,
e.abrv,CONVERT (char(10), a.fecha, 103) as Fecha,
f.entrada as Hora_IN,
a.hora as ENTRADA,
f.salida as Hora_out,
b.hora as SALIDA,
DATEDIFF(HOUR,a.hora,b.hora) as Horas_trabajadas,
c.hor_x_jor Horas_jornada,
 DATEDIFF(HOUR,a.hora,b.hora) -hor_x_jor as Diferencia
 
 
  from fichadas_in a
  JOIN fichadas_out b	on (a.Legajo=b.Legajo and a.fecha=b.fecha)
  JOIN empleados    c	on (a.legajo=c.legajo)
  JOIN sucursales d		on (c.CCO=d.Codigo)
  JOIN Clasificacion e	on (e.Codigo=c.Clasif)
  JOIN  grupo_horario f on (c.grupo_h=f.codigo)
where a.fecha between @fecha1 and @fecha2
AND C.Nombres LIKE '%' + @EMPLEADO + '%'

Puedo hacer eso?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 14
Ha disminuido su posición en 5 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

Stored procedure con parametro opcional

Publicado por Yamil Bracho (39 intervenciones) el 29/05/2018 18:55:42
Le colocas el valor por defecto al parametro

@EMPLEADO NVARCHAR(100) = ''
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar