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

uso de case en procedimientos almacenados

Estas en el tema de uso de case en procedimientos almacenados en el foro de Bases de Datos General en Foros del Web. wenas... algún maestro sabrá como se ocupa el case en un procedimiento almacenado??... existe el uso de if también?... cúales son las palabras claves(fuera de ...
  #1 (permalink)  
Antiguo 26/01/2005, 08:19
Avatar de sabandija25  
Fecha de Ingreso: abril-2004
Mensajes: 302
Antigüedad: 20 años
Puntos: 0
uso de case en procedimientos almacenados

wenas...

algún maestro sabrá como se ocupa el case en un procedimiento almacenado??... existe el uso de if también?...
cúales son las palabras claves(fuera de las sentencias) más ocupadas en esto??...

estoy recién comenzando, quiero pasar todas mis consultas de pag web a procedimientos almacenados, pero no sin antes conocer bien de que se trata...

gracias
  #2 (permalink)  
Antiguo 26/01/2005, 14:29
Avatar de Jorge_Mota  
Fecha de Ingreso: diciembre-2002
Ubicación: Chapinlandia :-D
Mensajes: 725
Antigüedad: 21 años, 4 meses
Puntos: 11
si dijeras el motor de base de datos
no se de MySql
pero en sql server si que los puedes usar, incluso entre las consultas
select case when campo=1 then 0 when campo = 2 then 100 else -1 end from tabla

Saludos
__________________
Jorge Mota
Blog
Gubiz estafa
  #3 (permalink)  
Antiguo 26/01/2005, 14:44
Avatar de sabandija25  
Fecha de Ingreso: abril-2004
Mensajes: 302
Antigüedad: 20 años
Puntos: 0
re

gracias por responder...
es de sql server efectivamente...

no entendí mucho el caso...

se me imagina q seria algo asi?

CREATE PROCEDURE MostrarData
@rut nvarchar(100)
@valor numeric(9)
AS
SELECT CASE WHEN @valor = 0
SELECT DISTINCT
Cliente.nombres AS cnombre, Cliente.appat AS cappat, Cliente.apmat AS capmat,
Cliente.telefono AS ctelefono
FROM Estado INNER JOIN
Cliente ON Estado.rut = Cliente.rut
WHERE (Estado.estado = 0) AND (Estado.rut = @rut)
ORDER BY Cliente.appat, Cliente.apmat, Cliente.nombres
SELECT CASE WHEN @valor = 1
SELECT DISTINCT
Cliente.nombres AS cnombre, Cliente.appat AS cappat, Cliente.apmat AS capmat,
Cliente.fax AS cfax
FROM Estado INNER JOIN
Cliente ON Estado.rut = Cliente.rut
WHERE (Estado.estado = 0) AND (Estado.rut = @rut)
ORDER BY Cliente.appat, Cliente.apmat, Cliente.nombres
END CASE
GO

algo por ahi? no hay nada de malo en los case?... se usa end case para terminar??

gracias!
  #4 (permalink)  
Antiguo 26/01/2005, 16:50
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
El CASE se utiliza dentro de sentencias, mientras que el IF se utiliza para control de flujo de tu programa:
Código:
IF @variable = 1		--flujo
BEGIN
	SELECT 
		campo,
		CASE campo2		--condicion
			WHEN 1 THEN 'uno'
			WHEN 2 THEN 'dos'
			DEFAULT 'nadie sabe'
		END
	FROM una_tabla
END
ELSE
BEGIN
	SELECT 
		campo3,
		CASE campo4
			WHEN 1 THEN 'uno'
			WHEN 2 THEN 'dos'
			DEFAULT 'nadie sabe'
		END
	FROM otra_tabla
END
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
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 11:44.