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

usar condicional en procedures

Estas en el tema de usar condicional en procedures en el foro de SQL Server en Foros del Web. Buen dia a todos! solicito vuestra ayuda para el siguiente problema que tengo. En una tabla tengo los siguientes datos de ejemplo: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código ...
  #1 (permalink)  
Antiguo 11/05/2011, 08:24
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 10 meses
Puntos: 267
Pregunta usar condicional en procedures

Buen dia a todos! solicito vuestra ayuda para el siguiente problema que tengo. En una tabla tengo los siguientes datos de ejemplo:

Código SQL:
Ver original
  1. ('0000000001','1','000001','01/01/2011','01/01/2011','ninguna','000001','01/01/2011')
  2. ('0000000002','0','000001','01/01/2011','01/01/2011','ninguna','000001','01/01/2011')
  3. ('0000000003','2','000001','01/01/2011','01/01/2011','ninguna','000001','01/01/2011')

lo que queria hacer es realizar un procedure que liste todos ellos, pero.... en la segunda columna que verifique si es '0','1' ó '2', que muestre otro resultado por ejemplo :

Código SQL:
Ver original
  1. ('0000000001','REGISTRADO','000001','01/01/2011','01/01/2011','ninguna','000001','01/01/2011')
  2. ('0000000002','GRABADO','000001','01/01/2011','01/01/2011','ninguna','000001','01/01/2011')
  3. ('0000000003','ANULADO','000001','01/01/2011','01/01/2011','ninguna','000001','01/01/2011')

estaba intentando realizar el siguiente procedure :
Código SQL:
Ver original
  1. ALTER PROCEDURE SP_LISTA_PEDIDO_MARKET
  2. AS
  3. DECLARE @ESTADO NVARCHAR(20)
  4. SELECT @ESTADO = ESTADO FROM MN_PEDIDO
  5. PRINT @ESTADO
  6. WHILE(@ESTADO IS NOT NULL)
  7. IF(@ESTADO = '0')
  8. BEGIN
  9. SELECT ESTADO = 'GRABADO'
  10. END
  11. ELSE IF(@ESTADO = '1')
  12. BEGIN
  13. SELECT ESTADO = 'REGISTRADO'
  14. END
  15. ELSE IF(@ESTADO = '2')
  16. BEGIN
  17. SELECT ESTADO = 'ANULADO'
  18. END

pero no obtengo el resultado que deseo, solo me muestra la columna de los 0,1,2, pero deseo que se liste todo y con los siguientes estados(Grabado,Registrado o anulado) espero vuestras ayudas. Gracias!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #2 (permalink)  
Antiguo 11/05/2011, 08:41
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: usar condicional en procedures

Prueba con un Case :)

Código SQL:
Ver original
  1. CREATE TABLE #temp
  2. (
  3. value1 VARCHAR(100),
  4. value2 VARCHAR(100),
  5. value3 VARCHAR(100),
  6. value4 VARCHAR(100),
  7. value5 VARCHAR(100),
  8. value6 VARCHAR(100),
  9. value7 VARCHAR(100),
  10. value8 VARCHAR(100)
  11. )
  12.  
  13.    
  14. INSERT INTO #temp (value1,value2,value3,value4,value5,value6,value7,value8) VALUES   ('0000000001','1','000001','01/01/2011','01/01/2011','ninguna','000001','01/01/2011')
  15.    
  16. INSERT INTO #temp (value1,value2,value3,value4,value5,value6,value7,value8) VALUES        ('0000000002','0','000001','01/01/2011','01/01/2011','ninguna','000001','01/01/2011')
  17.    
  18. INSERT INTO #temp (value1,value2,value3,value4,value5,value6,value7,value8) VALUES  ('0000000003','2','000001','01/01/2011','01/01/2011','ninguna','000001','01/01/2011')
  19.  
  20. SELECT value1,CASE
  21. WHEN value2=1 THEN 'registrado'
  22. WHEN value2=0 THEN 'Grabado'
  23. WHEN value2=2 THEN 'Anulado'
  24. END value2, value3, value4,value5,value6,value7,value8 FROM #temp

Saludos!!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 11/05/2011, 08:48
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 10 meses
Puntos: 267
Respuesta: usar condicional en procedures

Muchas Gracias Libras era lo que esperaba, pero ahora sacame 1 duda mas, por ejemplo si creo una tabla llamada "estado" y alli almaceno los codigos y la descripcion de estos estados y le hago inner join, ¿cual seria mas eficiente, con inner join o con el condicinal que me pasaste? Ahora te doy karma. Gracias .
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #4 (permalink)  
Antiguo 11/05/2011, 09:13
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Respuesta: usar condicional en procedures

Mi opinión es que quizá pueda ser más eficiente con el condicional, por el simple hecho de que solamente implica una tabla, ahora bien, vas a notar la diferencia? Yo diría que no porqué ésta sería mínima.
En cambio, las ventajas y posibilidades que te puede aportar el hecho de tener los estados tipificados en otra tabla son muchas.
Yo me intentaría decidir en ese sentido, y no en el sentido de si perjudica más o menos el rendimiento, porqué pienso que el perjuicio que pueda causar, como he comentado, es mínimo.
Opinión personal.
Saludos.
__________________
..:: moNTeZIon ::..
  #5 (permalink)  
Antiguo 11/05/2011, 09:17
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 10 meses
Puntos: 267
Respuesta: usar condicional en procedures

Gracias moNTeZIon por tu comentario!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net

Etiquetas: condicional, procedure
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 01:50.