SQL Server - PROBLEMA CON ALMACENAMIENTO EN VARIABLE

   
Vista:

PROBLEMA CON ALMACENAMIENTO EN VARIABLE

Publicado por Kevin Alvines (2 intervenciones) el 30/03/2015 02:02:02
Buenas noches..

Tengo un problema, utilizo esta funcion
Donde @DOCUMENT = '1114:111401:1115:1116:111804:'

CREATE FUNCTION [dbo].[RetornarQuery] (@DOCUMENT VARCHAR(4000))
RETURNS VARCHAR(4000)
AS
BEGIN
DECLARE @RESULTADO INT, @N INT, @A INT
DECLARE @DOCUMENT1 VARCHAR(4000)
DECLARE @M VARCHAR (4000), @R VARCHAR (4000), @H VARCHAR(4000)
SET @A=0
SET @N =0
SET @M=''
SET @R=''

WHILE PATINDEX('%:%',@DOCUMENT)>0
BEGIN
SET @RESULTADO = PATINDEX('%:%',@DOCUMENT) + @N
SELECT @N = @RESULTADO
SELECT @DOCUMENT1 = '' + '''' + LEFT(@DOCUMENT,PATINDEX('%:%',@DOCUMENT)-1) + ''''

SET @M = @M + ' '+CAST((@RESULTADO-@A-1) As Varchar(100))
SET @R = @R + 'LEFT(B.x_CodOrigen,' + CAST((@RESULTADO-@A-1) As Varchar(500)) + ')= ' + @DOCUMENT1 + ' OR '
SET @A = @RESULTADO

SET @RESULTADO = @RESULTADO + ' '+CAST((@RESULTADO) As Varchar(100))
SELECT @DOCUMENT = RIGHT(@DOCUMENT,LEN(@DOCUMENT)-PATINDEX('%:%',@DOCUMENT))
END

SELECT @H=LEFT(@R,LEN(@R)-3)

RETURN @H
END


la cual cuando realizo la ejecucion:

DECLARE @a VARCHAR(8000), @b VARCHAR(8000)

SET @a = dbo.RetornarQuery(LTRIM(RTRIM('1114:111401:1115:1116:111804:')))

SET @b='Isnull((SELECT ISNULL(SUM(abs(A.M_impMn)),0) AS MONTO FROM ETL_Detalle A INNER JOIN ETL_Indicadores B ON A.C_CodEtl=B.C_CodEtl And A.C_Indicador=B.C_Indicador And (' + LTRIM(RTRIM(@a)) + ') Where A.C_CodEtl=00202 And A.d_feccierre=@d_feccierre),0)'

SELECT @b

Me devuelve este resultado incompleto:

'Isnull((SELECT ISNULL(SUM(abs(A.M_impMn)),0) AS MONTO FROM ETL_Detalle A INNER JOIN ETL_Indicadores B ON A.C_CodEtl=B.C_CodEtl And A.C_Indicador=B.C_Indicador And (LEFT(B.x_CodOrigen,4)= '1114' OR LEFT(B.x_CodOrigen,6)= '111401' OR LEFT(B.x_CodOrigen,4'

Pero ejecutando en sql 2008 el resultado es el siguiente:

'Isnull((SELECT ISNULL(SUM(abs(A.M_impMn)),0) AS MONTO FROM ETL_Detalle A INNER JOIN ETL_Indicadores B ON A.C_CodEtl=B.C_CodEtl And A.C_Indicador=B.C_Indicador And (LEFT(B.x_CodOrigen,4)= '1114' OR LEFT(B.x_CodOrigen,6)= '111401' OR LEFT(B.x_CodOrigen,4)= '1115' OR LEFT(B.x_CodOrigen,4)= '1116' OR LEFT(B.x_CodOrigen,6)= '111804')
Where A.C_CodEtl=00202 And A.d_feccierre=@d_feccierre),0)'


Cual puede ser el problema?.. y cual seria la solucion?... gracias...
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
Imágen de perfil de Isaias

PROBLEMA CON ALMACENAMIENTO EN VARIABLE

Publicado por Isaias (3180 intervenciones) el 30/03/2015 18:52:08
Problema, no lo hay

Solución: Que dentro de los parámetros del query analizar, expandas la salida de tus resultados.
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

PROBLEMA CON ALMACENAMIENTO EN VARIABLE

Publicado por Kevin Alvines (2 intervenciones) el 30/03/2015 23:24:04
Perfecto!!!..
Muchisimas gracias..
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