Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Procedimiento almacenado con IF... ¿Alguna idea?

Estas en el tema de Procedimiento almacenado con IF... ¿Alguna idea? en el foro de SQL Server en Foros del Web. Buenas noches amigos de foros de la web Tengo el siguiente procedimiento almacenado que me regresa algunos datos dependiendo del nombre del gestor ALTER PROCEDURE ...
  #1 (permalink)  
Antiguo 25/03/2010, 19:47
 
Fecha de Ingreso: agosto-2008
Mensajes: 142
Antigüedad: 16 años, 3 meses
Puntos: 2
Procedimiento almacenado con IF... ¿Alguna idea?

Buenas noches amigos de foros de la web
Tengo el siguiente procedimiento almacenado
que me regresa algunos datos dependiendo del nombre del gestor

ALTER PROCEDURE [dbo].[ContactosGetAllSB]
(
@Gestor nvarchar(20),
@IdEmp Int
)
As
Select a.Id, a.Nombre, a.Tel, a.TelEmp, a.TelRef1, a.TelRef2, b.StatusS, a.MesAsig
From Contactos As a Inner Join Statusb As b On a.StatusB=b.Id
Where a.Gestor=@Gestor and a.IdEmp=@IdEmp and a.Baja=0
order by a.Nombre, a.MesAsig


DUDA...
Quisiera dar de alta otro parametro por ejemplo @Tipo
'@tipo boolean'

y que si @tipo=true
me traiga todos los datos

pero si @tipo=false
me traiga los datos donde a.gestor=@gestor

o sea
1.- If @tipo=true el where quedaria asi
Where a.IdEmp=@idEmp and a.baja=0

2.- if @tipo=false el where quedaria asi
Where a.Gestor=@Gestor and a.IdEmp=@IdEmp and a.Baja=0

Gracias por la ayuda
  #2 (permalink)  
Antiguo 25/03/2010, 21:48
 
Fecha de Ingreso: marzo-2010
Mensajes: 4
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Procedimiento almacenado con IF... ¿Alguna idea?

No existe el tipo de datos boolean así que usaremos el tipo bit: 0=falso, 1=verdadero.
No necesitas un IF sino el operador lógico OR:
Código:
ALTER PROCEDURE [dbo].[ContactosGetAllSB] 
(@Gestor nvarchar(20), @IdEmp Int, @tipo bit )
As
Select a.Id, a.Nombre, a.Tel, a.TelEmp, a.TelRef1, a.TelRef2, 
b.StatusS, a.MesAsig 
From Contactos As a Inner Join Statusb As b On a.StatusB=b.Id 
Where (a.Gestor=@Gestor OR @tipo=1) and a.IdEmp=@IdEmp and a.Baja=0 
order by a.Nombre, a.MesAsig
Así te devolverá todos los gestores cuando el @tipo sea 1.
  #3 (permalink)  
Antiguo 26/03/2010, 11:10
 
Fecha de Ingreso: agosto-2008
Mensajes: 142
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: Procedimiento almacenado con IF... ¿Alguna idea?

Cita:
Iniciado por xaloc25 Ver Mensaje
No existe el tipo de datos boolean así que usaremos el tipo bit: 0=falso, 1=verdadero.
No necesitas un IF sino el operador lógico OR:
Código:
ALTER PROCEDURE [dbo].[ContactosGetAllSB] 
(@Gestor nvarchar(20), @IdEmp Int, @tipo bit )
As
Select a.Id, a.Nombre, a.Tel, a.TelEmp, a.TelRef1, a.TelRef2, 
b.StatusS, a.MesAsig 
From Contactos As a Inner Join Statusb As b On a.StatusB=b.Id 
Where (a.Gestor=@Gestor OR @tipo=1) and a.IdEmp=@IdEmp and a.Baja=0 
order by a.Nombre, a.MesAsig
Así te devolverá todos los gestores cuando el @tipo sea 1.
si te das cuenta en el ejemplo que puse, use Bit no Boolean,

¿como implementas el "or"?
  #4 (permalink)  
Antiguo 26/03/2010, 12:01
Avatar de Gabo77  
Fecha de Ingreso: noviembre-2006
Mensajes: 381
Antigüedad: 18 años
Puntos: 6
Respuesta: Procedimiento almacenado con IF... ¿Alguna idea?

asastrem, no mientas, usaste boolean .... el el OR está implementado en la consulta que el buen xaloc25 te puso

Código SQL:
Ver original
  1. SELECT a.Id, a.Nombre, a.Tel, a.TelEmp, a.TelRef1, a.TelRef2,
  2.     b.StatusS, a.MesAsig
  3. FROM Contactos AS a
  4. INNER JOIN Statusb AS b
  5.     ON a.StatusB=b.Id
  6. WHERE (a.Gestor=@Gestor OR @tipo=1) --Aqui.... ¿ves el OR?
  7.     AND a.IdEmp=@IdEmp
  8.     AND a.Baja=0
  9. ORDER BY a.Nombre, a.MesAsig


Saludos!
__________________
Hicimos un pacto con Dios... El no desarrolla Sistemas y nosotros no hacemos milagros....

Etiquetas: idea, procedimiento, almacenar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:10.