SQL Server - Ayuda con Store, consulta dinamica

 
Vista:

Ayuda con Store, consulta dinamica

Publicado por Sebastian Carra (3 intervenciones) el 20/04/2006 22:04:16
Tengo un store al cual le paso parametros para armar la consulta dinamica pero no logro que funcione, el store es el siguiente:

CREATE PROCEDURE RSOthersRecurrents
@EnterpriseSelec VarChar(100),
@Reference VarChar(10) = NULL,
@Line VarChar(18) = NULL,
@Cicle Integer = NULL,
@Orden VarChar(100)
AS

Declare @SQL varchar(3000)

Set @SQL =
'SELECT Recurrents.BusinessArrangement, Recurrents.ServiceID, Recurrents.PBI, Recurrents.BE, Recurrents.ServDescription, Recurrents.AmmountGross,
Recurrents.AmmountNet, Recurrents.AmmountDiscount, Recurrents.AmmountIVA, Recurrents.AmmountOtherTaxes, Recurrents.CC
FROM Enterprises INNER JOIN Recurrents ON Enterprises.Cidn = Recurrents.Cidn INNER JOIN
Document ON Recurrents.IdDocument = Document.IdDocument INNER JOIN
Cicles ON Document.IdCicle = Cicles.IdCicle
WHERE (CHARINDEX(Enterprises.Cidn,' + @EnterpriseSelec + ') > 0) AND ((Recurrents.BusinessArrangement = ' + @Reference + ') OR (' + @Reference + ' IS NULL))
AND ((Recurrents.ServiceID = ' + @Line + ') OR (' + @Line + ' IS NULL)) AND ((Cicles.Cicle = ' + @Cicle + ') OR (' + @Cicle + ' IS NULL))
order by ' + @Orden

exec (@SQL)

GO

La consulta original es la siguiente (que funciona pero necesito hacerla dinamica debido a que el campo del order by necesito que sea variable):

SELECT Recurrents.BusinessArrangement, Recurrents.ServiceID, Recurrents.PBI, Recurrents.BE, Recurrents.ServDescription, Recurrents.AmmountGross,
Recurrents.AmmountNet, Recurrents.AmmountDiscount, Recurrents.AmmountIVA, Recurrents.AmmountOtherTaxes, Recurrents.CC
FROM Enterprises INNER JOIN Recurrents ON Enterprises.Cidn = Recurrents.Cidn INNER JOIN
Document ON Recurrents.IdDocument = Document.IdDocument INNER JOIN
Cicles ON Document.IdCicle = Cicles.IdCicle
WHERE (CHARINDEX(Enterprises.Cidn,@EnterpriseSelec) > 0) AND
((Recurrents.BusinessArrangement = @Reference) OR (@Reference IS NULL))
AND ((Recurrents.ServiceID = @Line) OR (@Line IS NULL)) AND
((Cicles.Cicle = @Cicle) OR (@Cicle IS NULL))
order by Recurrents.BusinessArrangement

Desde ya agradezco a quien me pueda ayudar porque ya probe de todo.

Saludos SEb@
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

RE:Ayuda con Store, consulta dinamica

Publicado por Eridal (5 intervenciones) el 21/04/2006 16:32:05
El problema es que tenes variables numericas, y SQL no puede concatenar este tipo de variables, lo que tenes que haces es castear las mismas

@Cicle Integer = NULL, <---- Esta es la que tira el ERROR

resolvelo asi

DECLARE @sCicle varchar(11)

SET @sCicle = convert(varchar(11), @Cicle)
o bien
SET @sCicle = cast(@Cicle as varchar(11))

Espero te sirva la respuesta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar