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

[SOLUCIONADO] Procedimiento almacenado con parámetros y eestructuras de control

Estas en el tema de Procedimiento almacenado con parámetros y eestructuras de control en el foro de SQL Server en Foros del Web. Hola amigos del foro, tengo una pregunta; quiero crear un procedimiento almacenado mediante el cual pueda filtrar según la opción que seleccionada de un combobox, ...
  #1 (permalink)  
Antiguo 22/07/2015, 13:40
Avatar de chavo1  
Fecha de Ingreso: diciembre-2014
Ubicación: Querétaro
Mensajes: 55
Antigüedad: 10 años
Puntos: 2
Pregunta Procedimiento almacenado con parámetros y eestructuras de control

Hola amigos del foro, tengo una pregunta; quiero crear un procedimiento almacenado mediante el cual pueda filtrar según la opción que seleccionada de un combobox, son 3 opciónes: opación 1= *.* me filtre todos los datos de la tabla, opción 2 = "Grupo" me filtre por el campo grupo los datos grupo escrito en un textbox, la opción 3 = "Nombre" me filtre por el campo nombre, el nombre que se va tecleando mediante consulta dinámica. y en el procedimiento almacenado según la opción seleccionada, me filtre los datos y mostrarlos en un dgv.

espero se entienda. por su ayuda Gracias.

un saludo
  #2 (permalink)  
Antiguo 22/07/2015, 13:52
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: Procedimiento almacenado con parámetros y eestructuras de control

si se entiende, y esta bien lo que quieres hacer, ahora cual es tu pregunta???
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 22/07/2015, 15:35
Avatar de chavo1  
Fecha de Ingreso: diciembre-2014
Ubicación: Querétaro
Mensajes: 55
Antigüedad: 10 años
Puntos: 2
Respuesta: Procedimiento almacenado con parámetros y eestructuras de control

Cita:
Iniciado por Libras Ver Mensaje
si se entiende, y esta bien lo que quieres hacer, ahora cual es tu pregunta???
La pregunta sería: ejemplo del procedimiento almacenado, para que según la opción seleccionada haga los filtros correspondientes, si la opción es *.* me muestre todos los datos, actualmente lo hago con tres procedimientos almacenados
1 mostrar_contactos, 2 Lista_porGrupo, y 3 Lista_porNombre, y quiero tener un solo procedimiento con las tres opciónes según el campo seleccionado *.*=todos, Grupo=campo[grupo], Nombre=[Nombre],j pasandole como parámetro el campo seleccionado.

(Trate de insertar el código pero No me permitió mandar el mensaje le puse almoadillas #)

El Procedimiento deberá elegir según el parámetro, si el parámetro es *.* me muestre todos, si el parámetro es "Grupo" me muestre solamente solamente los del grupo seleccionado desde un textbox, y si es por "Nombre" me vaya filtrando según lo escrito en el textbox (consulta dinámica)

Gracias Libras por contestar tan rápido, Saludos
  #4 (permalink)  
Antiguo 22/07/2015, 15:59
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: Procedimiento almacenado con parámetros y eestructuras de control

con un query dinamico:


Código SQL:
Ver original
  1. CREATE PROCEDURE mi_proc (@param INT, @valor VARCHAR(20) )
  2. AS
  3. DECLARE @query Nvarchar(MAX)
  4. SET @query=''
  5. SET @query='select * from tabla where '
  6.  
  7. IF @param=1
  8. SET @query=@query + 'grupo=' + @valor
  9. IF @param=2
  10. SET @query=@query + 'nombre=' + @valor
  11. IF @param=3
  12. SET @query=@query + '1=1'
  13.  
  14. sp_executesql @query
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 23/07/2015, 13:27
Avatar de chavo1  
Fecha de Ingreso: diciembre-2014
Ubicación: Querétaro
Mensajes: 55
Antigüedad: 10 años
Puntos: 2
Respuesta: Procedimiento almacenado con parámetros y eestructuras de control

Hola Libras muchas gracias por el ejemplo, estoy probando el procedimiento almacenado, pero no logro resultados, no se que este haciendo mal, pues al ejecutar el procedimiento me dice que no encontro el procedimiento almacenado "buscar_contacto", que es el nombre del procedimiento que le puse. le paso 1 para el valor del parámetro, y "amigos" como segundo parametro y nada.

Saludos
  #6 (permalink)  
Antiguo 23/07/2015, 13:37
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: Procedimiento almacenado con parámetros y eestructuras de control

como estas llamando el procedimiento???
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 23/07/2015, 13:55
Avatar de chavo1  
Fecha de Ingreso: diciembre-2014
Ubicación: Querétaro
Mensajes: 55
Antigüedad: 10 años
Puntos: 2
Respuesta: Procedimiento almacenado con parámetros y eestructuras de control

Cita:
Iniciado por Libras Ver Mensaje
como estas llamando el procedimiento???
Lo estoy probando directamente en sql

Libras como puedo enviar una imagen??
  #8 (permalink)  
Antiguo 23/07/2015, 13:56
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: Procedimiento almacenado con parámetros y eestructuras de control

Cita:
Iniciado por chavo1 Ver Mensaje
Lo estoy probando directamente en sql

Libras como puedo enviar una imagen??
Este...con que instruccion?? como haces el llamado???
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #9 (permalink)  
Antiguo 23/07/2015, 15:03
Avatar de chavo1  
Fecha de Ingreso: diciembre-2014
Ubicación: Querétaro
Mensajes: 55
Antigüedad: 10 años
Puntos: 2
Respuesta: Procedimiento almacenado con parámetros y eestructuras de control

Cita:
Iniciado por Libras Ver Mensaje
Este...con que instruccion?? como haces el llamado???
en sql voy a procedimientos almacenados, hago click derecho sobre el procedimiento y selecciono ejecutar procedimiento almacenado, aparece una pantalla para introducir los parametros y pulso aceptar, y se ejecuta el procedimiento, aparecen el resultado, (0) y aparece subrayado el nombre del procedimiento y el mensaje de error me dice que no encontro el procedimiento almacenado.

como te puedo mandar unas capturas de pantalla para que se comprenda mejor.?

Saludos.
  #10 (permalink)  
Antiguo 23/07/2015, 15:12
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: Procedimiento almacenado con parámetros y eestructuras de control

prueba con:

Código SQL:
Ver original
  1. EXEC buscar_contacto @param1, @param2


y otra cosa podrias poner el codigo de tu procedure?
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #11 (permalink)  
Antiguo 23/07/2015, 15:39
Avatar de chavo1  
Fecha de Ingreso: diciembre-2014
Ubicación: Querétaro
Mensajes: 55
Antigüedad: 10 años
Puntos: 2
Respuesta: Procedimiento almacenado con parámetros y eestructuras de control

Código SQL:
Ver original
  1. ALTER PROCEDURE buscar_contacto (
  2.     @param INT,
  3.     @valor VARCHAR(20)
  4.      )
  5.     AS
  6.     DECLARE @query Nvarchar(MAX)
  7.     SET @query=''
  8.     SET @query='select * from contactos where '
  9.    
  10.      
  11.     IF @param=1
  12.     SET @query=@query + 'grupo=' + @valor
  13.     IF @param=2
  14.     SET @query=@query + 'nombre=' + @valor
  15.     IF @param=3
  16.     SET @query=@query + '1=1'

Este es el código de procedimiento. y con el último código que me mandaste, me manda el mismo error. "No se pudo encontrar el procedimiento almacenado 'dbo.buscar_contacto

Última edición por gnzsoloyo; 24/07/2015 a las 15:02
  #12 (permalink)  
Antiguo 23/07/2015, 16:22
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: Procedimiento almacenado con parámetros y eestructuras de control

quitale el dbo nada mas ejecuta

Código SQL:
Ver original
  1. EXEC buscar_contacto @param1, @param2
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #13 (permalink)  
Antiguo 24/07/2015, 14:59
Avatar de chavo1  
Fecha de Ingreso: diciembre-2014
Ubicación: Querétaro
Mensajes: 55
Antigüedad: 10 años
Puntos: 2
Respuesta: Procedimiento almacenado con parámetros y eestructuras de control

Hola libras, por fin pude solucionar mi problema, estube buscando en internet y encontre la solución. aunque todavía tengo un pequeño problema pues la opción 1 es un select de todo por lo tanto. solamente se necesita un parámetro y me manda error porque necesita el segundo parámetro, en las otras opciones no hay problema funciona a la perfección, te muestro el código del procedimiento y para alguna otra persona que le sirva.

Código SQL:
Ver original
  1. CREATE proc test3
  2. @opc nvarchar(6),
  3. @campo nvarchar(20)
  4. AS
  5. IF @opc='*.*'
  6. BEGIN
  7. SELECT * FROM Contactos
  8. END
  9. ELSE IF @opc='grupo'
  10. BEGIN
  11. SELECT * FROM Contactos WHERE Grupo=@campo
  12. END
  13. ELSE IF @opc='nombre'
  14. BEGIN
  15. SELECT * FROM Contactos WHERE Nombre LIKE + @campo + '%'
  16. END
como puedo evitar que en la opción *.*, no me pida el segundo parámetro (@campo)

Saludos
  #14 (permalink)  
Antiguo 24/07/2015, 15:46
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: Procedimiento almacenado con parámetros y eestructuras de control

ponle un valor default NULL :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: almacenado, control, procedimiento, tabla
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 13:19.