Hola, Yo use SQL dinamico para eso por el tema del sort, pero para el resto de las cosas no es necesario...
Salu2 On 2/5/07, Maxi Accotto <[EMAIL PROTECTED]> wrote:
Hola, no veo la necesidad de crear consultas dinamicas para esto, si es varchar solo pones where campo > param and campo < param. Con respecto al sql dinamico: http://www.hayes.ch/*sql*/sql_dinamico.html <http://www.hayes.ch/sql/sql_dinamico.html> 2007/2/4, The Developer <[EMAIL PROTECTED]>: > > Hola Gente > Estoy teniendo problemas al hacer un SP que filtra por rangos de codigo > el problema en cuestion es que tengo una tabla cuyas claves son > alfanumericas ( Varchars )y tengo que filtrar por rangos (por ejemplo todos > aquellos proveedores que esten entre "pro0001" y "pro0023" ) > La consulta la creo dinamicamente , al parecer el problema esta en que > cuando le paso los parametros no me los toma como varchar sino como un > simbolo cualquiera > me tira errores del estilo: > > Mens. 207, Nivel 16, Estado 1, Línea 17 > > Invalid column name 'pro00001'. > > Mens. 207, Nivel 16, Estado 1, Línea 17 > > Invalid column name 'pro00003'. > > LA consulta la armo de la siguiente manera: > > ALTER > PROCEDURE [dbo].[ReporteListadoProveedores] > > ( > > @CodigoDesde > varchar(10) , > > @CodigoHasta > varchar(10) , > > @SortBy > int > > ) > > AS > > --obtener los parametros y armar e ejecutar la query de acuerdo a ello > > Declare @SQLQuery VarChar(8000 ) > > Declare @from VarChar(1000 ) > > Declare @Where VarChar(1000 ) > > Declare @Sort VarChar(1000 ) > > set @Where = '' > > set @Sort = '' > > --para probarlo > > --exec ReporteListadoProveedores @CodigoDesde = '1' , @CodigoHasta = '1' > , @SortBy = 2 > > select @from ='SELECT Proveedor.ProveedorCodigo AS cod_proveedor > > ,Proveedor.ProveedorRazonSocial AS razon_social > > ,Localidad.LocalidadNombre AS localidad > > ,Provincia.ProvinciaNombre AS provincia > > ,1223 AS cod_postal > > ,Proveedor.ProveedorTelefono AS telefono > > ,Domicilio.DomicilioFax AS tel_fax > > ,CategoriaIva.CategoriaIvaCodigo AS cod_iva > > ,CategoriaIva.CategoriaIvaDescripcion AS desc_iva > > ,Proveedor.ProveedorCUIT AS cuit > > FROM Proveedor LEFT OUTER JOIN > > Domicilio ON Proveedor.DomicilioId = Domicilio.DomicilioId LEFT OUTER > JOIN > > Localidad ON Domicilio.LocalidadId = localidad.LocalidadId LEFT OUTER > JOIN > > Provincia ON localidad.ProvinciaID = Provincia.ProvinciaID LEFT OUTER > JOIN > > CategoriaIva ON Proveedor.CategoriaIvaId = CategoriaIva.CategoriaIvaID' > > --setear la condicion del where > > IF @CodigoDesde <> '0' > > BEGIN > > --Print 'entro 1' > > IF @CodigoHasta IS NOT NULL > > BEGIN > > --Print 'entro 2' > > select @Where = ' WHERE Proveedor.ProveedorCodigo BETWEEN ' + 'CAST('+ > @CodigoDesde +' AS varchar(10))' + ' AND ' + 'CAST('[EMAIL PROTECTED] + 'AS > varchar(10)) ' > > END > > END > > --setear el orden > > IF @SortBy = 1 > > BEGIN > > Select @Sort = ' ORDER BY Proveedor.ProveedorCodigo DESC' > > END > > ELSE > > BEGIN > > Select @Sort = ' ORDER BY Proveedor.ProveedorRazonSocial DESC' > > END > > --TODO > > --falta el codigo postal en la tabla domicilio y ponerlo para que se > arme bien en la consulta > > --armar la consulta > > select @SQLQuery = @from + @Where + @Sort > > --solo para testear > > Print @SQLQuery > > --ejecutar la consulta > > Exec (@SQLQuery) > > > Si alguien alguna ves hizo algo parecido y me puede dar una mano lo > agradecere ! > Desda ya gracias ! > Saludos > > Julian > > > -- ---------------------------------------------------- Microsoft MVP en SQL Server SQLTotalConsulting - Servicios & proyectos en SQLServer Orador Culminis - Microsoft Influencier www.sqlgurus.org -------------------------------------------
