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

Como puedo parametrizar un Like en un procedimiento?

Estas en el tema de Como puedo parametrizar un Like en un procedimiento? en el foro de SQL Server en Foros del Web. Hola, quiero parametrizar un Like en mi procedimiento el cual es el siguiente: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original CREATE PROCEDURE [ dbo ] . ...
  #1 (permalink)  
Antiguo 25/04/2011, 09:03
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 17 años
Puntos: 2
Como puedo parametrizar un Like en un procedimiento?

Hola, quiero parametrizar un Like en mi procedimiento el cual es el siguiente:
Código SQL:
Ver original
  1. CREATE PROCEDURE [dbo].[ReportHour]
  2.  
  3.     @fecha  datetime,
  4.     @fechaend  datetime,
  5.     @Linea  nvarchar(4),
  6.     @Tubo  nvarchar(1),
  7.     @hora nvarchar(3) AS
  8.    
  9.     BEGIN
  10.  
  11.     SELECT h.marca,h.target,P.CODOPTIMA,
  12.     p.hora,p.peso,p.vaso,p.fecha,o.linea,o.tubo
  13.     INTO #checho3
  14.     FROM pesos AS p, optimas AS o,htargets AS h
  15.     WHERE o.codigo = p.codOptima AND o.linea =@Linea
  16.     AND o.tubo =@Tubo AND p.fecha >= '20110418' AND p.fecha <'20110419'
  17.     AND h.fecha >='20110418' AND h.fecha <'20110419'
  18.     AND p.hora LIKE'12%' AND h.codoptima = o.codigo AND h.hora LIKE'12%'
  19.      SELECT *,(SELECT COUNT(1)total FROM #checho3) AS totality FROM #checho3 ORDER BY fecha
  20.      DROP TABLE #checho3
  21.      END
Como se ve necesito que parametrizar el Like el cual se llama el parametro Hora y solo necesito buscar que inicie por la hora indicada, es decir por las 12 por las 13 etc... Ya lo que sigue no me importa. Alguien que me pueda ayudar para hacer esto?
  #2 (permalink)  
Antiguo 25/04/2011, 09:14
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, 3 meses
Puntos: 774
Respuesta: Como puedo parametrizar un Like en un procedimiento?

Con un query dinamico, pones tu consulta en un campo varchar y dependiendo los valores vas cambiando tu query algo asi:

declare @query varchar(max)
declare @variable varchar(20)

set @variable='13'

set @query='select * from tabla where campo like ' + char(39) + '%' + @variable + char(39)

exec Sp_sqlExec @query


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 25/04/2011, 09:36
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 17 años
Puntos: 2
Respuesta: Como puedo parametrizar un Like en un procedimiento?

No hay una manera mas simple de pasarle el parametro???? No quiero hacer una consulta dinamica, solo quiero pasarle el parametro y ya.
Gracias
  #4 (permalink)  
Antiguo 25/04/2011, 09: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, 3 meses
Puntos: 774
Respuesta: Como puedo parametrizar un Like en un procedimiento?

Con un like no creo que sea posible pasar el parametro la solucion que le veo es con un query dinamico a menos que me equivoque....

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 25/04/2011, 10:18
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 17 años
Puntos: 2
Respuesta: Como puedo parametrizar un Like en un procedimiento?

Hola, ya pude, y creo que no necesite una consulta dinamica como comentas, pero si estoy en algun error te agradeceria me lo hicieras saber. Mi procedimiento quedo asi:
Código SQL:
Ver original
  1. CREATE PROCEDURE [dbo].[Was2ReportHour]
  2.  
  3.     @Linea  nvarchar(4),
  4.     @Tubo  nvarchar(1),
  5.     @fecha  datetime,
  6.     @fechaend  datetime,
  7.    
  8.     @hora nvarchar(4) AS
  9.    
  10.     BEGIN
  11.  
  12.     SELECT h.marca,h.target,P.CODOPTIMA,
  13.     p.hora,p.peso,p.vaso,p.fecha,o.linea,o.tubo
  14.     INTO #checho3
  15.     FROM pesos AS p, optimas AS o,htargets AS h
  16.     WHERE o.codigo = p.codOptima AND o.linea =@Linea
  17.     AND o.tubo =@Tubo AND p.fecha >=@fecha AND p.fecha <@fechaend
  18.     AND h.fecha >=@fecha AND h.fecha <@fechaend
  19.     AND p.hora LIKE @hora AND h.codoptima = o.codigo AND h.hora LIKE @hora
  20.      SELECT *,(SELECT COUNT(1)total FROM #checho3) AS totality FROM #checho3 ORDER BY fecha
  21.      DROP TABLE #checho3
  22.      END
Finalmente solo lo ejecuto asi:
Código SQL:
Ver original
  1. Was2ReportHour 'L16N','B','20110418','20110419','12%'

Y me regresa los datos que necesito:

Saludos

Etiquetas: procedimiento
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 14:01.