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

Error..

Estas en el tema de Error.. en el foro de SQL Server en Foros del Web. Cual es el error en esta consulta? No p uedo hacer q me arroje el error "-1" cuando los campos de almacen no coinciden.... @import ...
  #1 (permalink)  
Antiguo 17/02/2011, 11:03
Avatar de Inicia  
Fecha de Ingreso: octubre-2010
Ubicación: Actualmente en GDL
Mensajes: 135
Antigüedad: 13 años, 6 meses
Puntos: 1
Error..

Cual es el error en esta consulta? No p uedo hacer q me arroje el error "-1" cuando los campos de almacen no coinciden....



Código SQL:
Ver original
  1. -- exec P5rLeeALMACEN 'EMP1', 'P081095'
  2.  
  3. ALTER proc P5rLeeALMACEN
  4. (@HEmpresa  utClave
  5. ,@HOrdenventa   utClave )
  6. AS
  7. DECLARE
  8. @almacen utclave
  9.  
  10. SET nocount ON
  11. IF isnull(@HOrdenventa,'')<> ''
  12. BEGIN
  13. SELECT @Almacen=e.Almacen FROM ordvtadetalle d, ordvtaencabezado e
  14. WHERE d.almacen=e.almacen AND d.empresa=e.empresa AND d.folio=e.folio
  15. AND e.folio = @HOrdenventa AND e.Empresa = @HEmpresa
  16.     SELECT RetVal = 0,  HObservacion2 = @almacen
  17. RETURN 0
  18. END
  19.  
  20. SET nocount ON
  21. IF isnull(@HOrdenventa,'')<> ''
  22. BEGIN
  23. SELECT @Almacen=e.Almacen FROM ordvtadetalle d, ordvtaencabezado e
  24. WHERE d.almacen<>e.almacen AND d.empresa=e.empresa AND d.folio=e.folio
  25. AND e.folio = @HOrdenventa AND e.Empresa = @HEmpresa
  26.     SELECT RetVal = -1,  HObservacion2 = @almacen
  27. RETURN -1
  28. END
  29.  
  30. SELECT RetVal = 0
  31. RETURN 0
  #2 (permalink)  
Antiguo 17/02/2011, 11:41
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Error..

Te falta capturar el valor en la llamada del procedimiento.
Código SQL:
Ver original
  1. DECLARE @ReturnValue INT
  2. EXEC @ReturnValue = P5rLeeALMACEN 'EMP1', 'P081095'
Mira este link: http://www.sqlteam.com/article/store...returning-data
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #3 (permalink)  
Antiguo 17/02/2011, 12:04
Avatar de Inicia  
Fecha de Ingreso: octubre-2010
Ubicación: Actualmente en GDL
Mensajes: 135
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: Error..

Aun me sigue dando el mismo resultado...

Retval 0
Almacen 06

y cuando no coinciden sale
Retval 0
Almacen null
  #4 (permalink)  
Antiguo 17/02/2011, 12:07
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Error..

Si el valor es un INT, dudo mucho que capture un -1, ¿no creen?
__________________
MCTS Isaias Islas
  #5 (permalink)  
Antiguo 17/02/2011, 13:43
Avatar de Inicia  
Fecha de Ingreso: octubre-2010
Ubicación: Actualmente en GDL
Mensajes: 135
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: Error..

:( no puedo resolverlo... la primera consulta lo hace correcto.. si el campo almacen es = al campo almacen d la otra tabla entonces regresa el campo almacen... pero como hacerle para q me regrese retval -1 cuando estos 2 campos no coinciden??
  #6 (permalink)  
Antiguo 17/02/2011, 13:52
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Exclamación Respuesta: Error..

Cita:
Iniciado por iislas Ver Mensaje
Si el valor es un INT, dudo mucho que capture un -1, ¿no creen?
Yo creo que si:
Código SQL:
Ver original
  1. DECLARE @x INT
  2.  
  3. SET @x = -1
  4.  
  5. SELECT @x
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #7 (permalink)  
Antiguo 17/02/2011, 14:07
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Pregunta Respuesta: Error..

Cita:
Iniciado por Inicia Ver Mensaje
:( no puedo resolverlo... la primera consulta lo hace correcto.. si el campo almacen es = al campo almacen d la otra tabla entonces regresa el campo almacen... pero como hacerle para q me regrese retval -1 cuando estos 2 campos no coinciden??
Que tipo de datos guarda utClave?
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #8 (permalink)  
Antiguo 17/02/2011, 14:13
Avatar de Inicia  
Fecha de Ingreso: octubre-2010
Ubicación: Actualmente en GDL
Mensajes: 135
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: Error..

Cita:
Iniciado por flaviovich Ver Mensaje
Que tipo de datos guarda utClave?
char -
  #9 (permalink)  
Antiguo 17/02/2011, 14:46
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Error..

Que valores guardan las variables de entrada?
Te recomiendo probar por si acaso con RTRIM en el IF.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #10 (permalink)  
Antiguo 17/02/2011, 15:00
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Error..

Correcto, he consultado el BOL y dice:

int

-2^31 (-2,147,483,648) to 2^31-1 (2,147,483,647)

4 Bytes

Siempre se aprende algo nuevo
__________________
MCTS Isaias Islas
  #11 (permalink)  
Antiguo 17/02/2011, 16:29
Avatar de Inicia  
Fecha de Ingreso: octubre-2010
Ubicación: Actualmente en GDL
Mensajes: 135
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: Error..

Son char las variables de entrada
  #12 (permalink)  
Antiguo 18/02/2011, 08:24
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Error..

Prueba asi:
Código SQL:
Ver original
  1. -- exec P5rLeeALMACEN 'EMP1', 'P081095'
  2.  
  3. ALTER proc P5rLeeALMACEN
  4. (@HEmpresa  utClave
  5. ,@HOrdenventa utClave )
  6. AS
  7.  
  8. SET nocount ON
  9.  
  10. IF isnull(@HOrdenventa,'') <> ''
  11.     SELECT HObservacion2 = e.Almacen,
  12.     RetVal = CASE WHEN d.almacen = e.almacen THEN 0 ELSE -1 END
  13.     FROM ordvtadetalle d
  14.     INNER JOIN ordvtaencabezado e ON d.empresa = e.empresa AND d.folio = e.folio
  15.     WHERE e.folio = @HOrdenventa AND e.Empresa = @HEmpresa
  16. ELSE
  17.     SELECT RetVal = 0
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.

Etiquetas: Ninguno
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 10:01.