Case When con parametro de Store

28/05/2004 - 02:02 por ONIL | Informe spam
Hola amigos..!
Tengo un pequeño problema..
Tengo un store al cual le paso un parametro entero(0-5).
Necesito que efectue una consulta diferente dependiendo del valor que se
le pase..algo como esto..

CREATE PROCEDURE CAT
@CatName int(1)
AS
CASE @CatName=0 THEN SELECT * FROM TABLA1
CASE @CatName=1 THEN SELECT * FROM TABLA2
END

Gracias Anticipadas..
(\__/)
(=':'=)
(")_(")
ONil@.
MX.

Preguntas similare

Leer las respuestas

#1 Javier Loria
28/05/2004 - 00:31 | Informe spam
Hola:
El case en SQL no funcion como el case/switch de Basic, Pacal o C, y no
existe un equivalente, tienes que simularlo con IF.
==IF (@CatName=0)
BEGIN
SELECT * FROM TABLA1
END
ELSE IF (@CatName=1)
BEGIN
SELECT * FROM TABLA2
END
...
== Esta estructuras, producen con frecuencia problemas de recompilacion y
rendimiento en los procedimientos, y son dificiles de mantener :(
Saludos,

Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

ONIL@ escribio:
Hola amigos..!
Tengo un pequeño problema..
Tengo un store al cual le paso un parametro entero(0-5).
Necesito que efectue una consulta diferente dependiendo del valor
que se le pase..algo como esto..

CREATE PROCEDURE CAT
@CatName int(1)
AS
CASE @CatName=0 THEN SELECT * FROM TABLA1
CASE @CatName=1 THEN SELECT * FROM TABLA2
END

Gracias Anticipadas..
(\__/)
(=':'=)
(")_(")

MX.
Respuesta Responder a este mensaje
#2 Maxi
28/05/2004 - 00:36 | Informe spam
Hola, no uses CASE usa IF

o sea

CREATE PROCEDURE CAT
@CatName int(1)
AS
IF @CatName=0
BEGIN
SELECT * FROM TABLA1
END
ELSE
BEGIN
SELECT * FROM TABLA2
END

==
Bye gatito con 9 vidas ;-)

Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"ONIL@" escribió en el mensaje
news:u%
Hola amigos..!
Tengo un pequeño problema..
Tengo un store al cual le paso un parametro entero(0-5).
Necesito que efectue una consulta diferente dependiendo del valor que se
le pase..algo como esto..

CREATE PROCEDURE CAT
@CatName int(1)
AS
CASE @CatName=0 THEN SELECT * FROM TABLA1
CASE @CatName=1 THEN SELECT * FROM TABLA2
END

Gracias Anticipadas..
(\__/)
(=':'=)
(")_(")

MX.








Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.688 / Virus Database: 449 - Release Date: 18/05/2004
Respuesta Responder a este mensaje
#3 Verónica
28/05/2004 - 00:46 | Informe spam
Otra Solución a tu problema sería pasar el nombre de la tabla como parametro de esta form

CREATE PROCEDURE CAT @CatName NVARCHAR(100
A
EXEC('SELECT * FROM' + @CatName

O SI TUS TABLAS SE LLAMAN TABLA1,TABLA2...TABLA5 PODRIAS HACER ESt

CREATE PROCEDURE CAT @CatName nvarchar(1
A
EXEC('SELECT * FROM TABLA' + @CatName
Respuesta Responder a este mensaje
#4 Maxi
28/05/2004 - 00:51 | Informe spam
Hola Vero!! es verdad que es otra solucion pero para nada recomendada :(

El uso de Sql dinamico no es nada bueno, que pasaria si alguien como
parametro te pasaria

;drop table clientes;

ojo con esto!!!

Suerte


Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Verónica" escribió en el mensaje
news:
Otra Solución a tu problema sería pasar el nombre de la tabla como


parametro de esta forma

CREATE PROCEDURE CAT @CatName NVARCHAR(100)
AS
EXEC('SELECT * FROM' + @CatName )


O SI TUS TABLAS SE LLAMAN TABLA1,TABLA2...TABLA5 PODRIAS HACER EStO

CREATE PROCEDURE CAT @CatName nvarchar(1)
AS
EXEC('SELECT * FROM TABLA' + @CatName )










Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.688 / Virus Database: 449 - Release Date: 18/05/2004
Respuesta Responder a este mensaje
#5 Verónica
28/05/2004 - 01:06 | Informe spam
Gracias Maxi por el comentari

Tenía la idea que SQL dinamico era una muy buena altermativa..., lo tomare en cuenta
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida