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

Problema con procedimientos almacenados

Estas en el tema de Problema con procedimientos almacenados en el foro de SQL Server en Foros del Web. Hola, necesito su ayuda. Estoy trabajando con Pubs Debo crear un SP que permita realizar la búsqueda de la información de los autores. El usuario ...
  #1 (permalink)  
Antiguo 08/02/2014, 20:23
 
Fecha de Ingreso: julio-2010
Mensajes: 191
Antigüedad: 13 años, 10 meses
Puntos: 2
Problema con procedimientos almacenados

Hola, necesito su ayuda.

Estoy trabajando con Pubs

Debo crear un SP que permita realizar la búsqueda de la información de los autores.
El usuario pasara como parámetro ya sea el apellido del autor o su número telefónico

Por ejemplo, si ejecuto esto

Exec USP 'raro'

Me de be salir un msj que diga que no existe el apellido "raro" (en caso que no existiera) y si existe ese apellido debe mostrar la informacion de ese autor

Eso es sencillo, el problema es cuando quiero buscar un autor por su numero de telefono

Si yo ejecuto esto
Exec USP '222-2222'

Me debe salir un msj que no existe numero (si no existe), no me debería salir que no existe autor. Me explico?

Me pueden ayudar?



TENGO ESTE QUERY PERO NO ESTA CORRECTO

Código SQL:
Ver original
  1. CREATEPROCEDURE USP
  2. @Parametro VARCHAR (50) = NULL
  3. AS
  4.  
  5. IF @Parametro IS NOT NULL AND @Parametro!=' '
  6. BEGIN
  7.    
  8.    
  9.     IF  EXISTS (SELECT * FROM authors WHERE au_lname=@Parametro)
  10.         BEGIN
  11.             SELECT * FROM authors
  12.             WHERE au_lname=@Parametro
  13.         END
  14.        
  15.         ELSE
  16.        
  17.         IF EXISTS (SELECT * FROM authors WHERE phone=@Parametro)
  18.         BEGIN
  19.             SELECT * FROM authors
  20.             WHERE phone=@ParametrO
  21.        
  22.         END
  23.         ELSE
  24.             PRINT 'TELEFONO NO EXISTE'
  25.             PRINT 'AUTOR NO ESTÁ REGISTRADO'
  26.    
  27. END
  28. ELSE
  29.     PRINT 'INGRESE EL APELLIDO O EL NUMERO DE TELEFONO A BUSCAR'

Última edición por l222p; 08/02/2014 a las 20:35
  #2 (permalink)  
Antiguo 09/02/2014, 13:47
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: Problema con procedimientos almacenados

esta bien lo que te sale por como tienes acomodado tu query porque si no es nombre entonces busca en telefono y si no es esto entonces imprime los 2 mensajes, ahora como identificas que sea un telefono de un apellido? aqui se me ocurre que podrias usar el isnumeric para saber si es digito(los telefonos tienen digitos pero que tal si es por ejemplo felipe 3), porque si el parametro no fuera ni un apellido ni un telefono entonces?? que mensaje mandarias???? entiendes???
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 09/02/2014, 19:32
 
Fecha de Ingreso: julio-2010
Mensajes: 191
Antigüedad: 13 años, 10 meses
Puntos: 2
Respuesta: Problema con procedimientos almacenados

Yo pensé en eso también, en identificar si ingreso un numero o una cadena, pero lo que pasa es que ambos campos, (phone au_lname) son del mismo tipo (varchar) entonces siempre lo tomará como una cadena.

Y si no existe algun numero o apellido esto debe mandar que no existe el numero asi como lo tengo.

Se me vino a la mente LIKE, por ejemplo
yo recuero que cuando empece con sql en access, utilizabamos prefijos

por ejemplo campo LIKE '*#*'

y nos salia si era un numero, o Campo like '*[a-z]*' si estaba en ese rango, pero no se como se hace aqui en SQL
  #4 (permalink)  
Antiguo 09/02/2014, 21:33
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: Problema con procedimientos almacenados

investiga sobre la funcion isnumber.....
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: procedimientos
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 08:11.