
Apoyo Creando DW
Publicado por Frank Michael (50 intervenciones) el 02/06/2016 18:23:45
Estimado buenas, aquí una vez mas acudiendo a su apoyo, resulta que tengo este procedimiento almacenado:
De ese procedimiento quiero crear un DW, pero me salta el siguiente error:
---------------------------
DataWindow Wizard
---------------------------
Cannot create DataWindow.
'Index #0 Message: Sintaxis incorrecta cerca de 'ADD'. NativeError: 102 Source: Microsoft OLE DB Provider for SQL Server SQLState: 42000
1 execute dbo.USP_RPT_MOV_MES2;1 @AS_EMPRESA = :AS_EMPRESA, @AS_PERIODO = :AS_PERIODO'
---------------------------
Aceptar
---------------------------
Quisiera saber si ese inconveniente tiene solución o quizas deba pensar otra forma de hacer mi procedimiento.
Atento a sus comentarios
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
CREATE PROCEDURE [dbo].[USP_RPT_MOV_MES2] (@AS_EMPRESA CHAR (3), @AS_PERIODO CHAR (8)) AS
BEGIN
DECLARE @codigo CHAR(3),
@texto1 VARCHAR(50),
@texto2 VARCHAR(50),
@cadena VARCHAR(8000),
@cont INT,
@TMP_FICHA VARCHAR(20),
@TMP_MOVIMIENTO VARCHAR(20),
@TMP_VALOR VARCHAR(24),
@TMP_MOV_CAB VARCHAR(50),
@tmp_ano_mes varchar(7)
CREATE TABLE #TMP_REPORT ( TMP_FICHA VARCHAR(20) NULL,
TMP_NOMBRE VARCHAR(100) NULL,
TMP_APE_PAT VARCHAR(100) NULL,
TMP_APE_MAT VARCHAR(100) NULL
)
CREATE TABLE #TMP_CAB ( TMP_NUM_COL CHAR (3) NULL,
TMP_NOM_CAM VARCHAR(50) NULL,
TMP_MOVIMIE VARCHAR(50) NULL
)
CREATE TABLE #TMP_MOVIMIENTOS ( TMP_FICHA VARCHAR(20) NULL,
TMP_NOMBRE VARCHAR(100) NULL,
TMP_APE_PAT VARCHAR(100) NULL,
TMP_APE_MAT VARCHAR(100) NULL,
TMP_MOVIMIENTO VARCHAR(20) NULL,
TMP_VALOR VARCHAR(24),
TMP_MOV_CAB VARCHAR(50)
)
INSERT INTO #TMP_CAB
SELECT rank() OVER (ORDER BY CODIGO, TEXTO1, TEXTO2 ),
TEXTO1,
TEXTO2
FROM FLEXLINE.GEN_TABCOD
WHERE EMPRESA = @AS_EMPRESA
AND TIPO = 'CFG.INFORMESLEGALES'
AND CODIGO LIKE 'Planilla de Sue.%'
AND SUBSTRING ( CODIGO ,18, 3 ) <= '100'
AND ISNULL(TEXTO1, 'X') <> 'X'
AND TEXTO1 <> ''
GROUP BY CODIGO, TEXTO1, TEXTO2
Set @tmp_ano_mes = Substring(@AS_PERIODO,1,6)+ '%'
INSERT INTO #TMP_MOVIMIENTOS
SELECT A.FICHA, B.NOMBRE, B.APELLIDO_PATERNO, B.APELLIDO_MATERNO, A.MOVIMIENTO, A.VALOR, C.TMP_NOM_CAM
FROM FLEXLINE.PER_DET_LIQ A left join #TMP_CAB C on A.MOVIMIENTO = C.TMP_MOVIMIE, FLEXLINE.PER_TRABAJADOR B--, #TMP_CAB C
WHERE A.EMPRESA = '001'
AND A.PERIODO LIKE '201604%'
AND A.ficha = B.ficha
AND A.EMPRESA = B.EMPRESA
INSERT INTO #TMP_REPORT
SELECT TMP_FICHA,
TMP_NOMBRE,
TMP_APE_PAT,
TMP_APE_MAT
FROM #TMP_MOVIMIENTOS
GROUP BY TMP_FICHA, TMP_NOMBRE, TMP_APE_PAT, TMP_APE_MAT
--agregando campos faltantes
set @cadena = 'alter table #TMP_REPORT ADD '
set @cont = 0
declare cur_campo cursor scroll for
select TMP_NUM_COL,TMP_NOM_CAM,TMP_MOVIMIE
from #TMP_CAB
open cur_campo
fetch first from cur_campo into @codigo, @texto1, @texto2
while @@fetch_status = 0
begin
set @cont = @cont + 1
if @cont = 1
begin
set @cadena = @cadena+'['+@texto1+'] varchar(24)'
end
else
begin
set @cadena = @cadena+',['+@texto1+'] varchar(24)'
end
fetch next from cur_campo into @codigo, @texto1, @texto2
end
close cur_campo
deallocate cur_campo
exec(@cadena)
Declare CUR_MOV Cursor FORWARD_ONLY For
SELECT TMP_FICHA,
TMP_MOVIMIENTO,
TMP_VALOR,
TMP_MOV_CAB
FROM #TMP_MOVIMIENTOS
Open CUR_MOV
Fetch CUR_MOV Into @TMP_FICHA,
@TMP_MOVIMIENTO,
@TMP_VALOR,
@TMP_MOV_CAB
While (@@FETCH_STATUS = 0 )
Begin
set @cadena = 'UPDATE #TMP_REPORT SET [' + @TMP_MOV_CAB + ']="' + ISNULL(@TMP_VALOR,'') + '" WHERE TMP_FICHA = "' + @TMP_FICHA + '"'
EXEC (@cadena)
UPDATE #TMP_REPORT
SET @TMP_MOV_CAB = @TMP_VALOR
WHERE TMP_FICHA = @TMP_FICHA
Fetch CUR_MOV Into @TMP_FICHA,
@TMP_MOVIMIENTO,
@TMP_VALOR,
@TMP_MOV_CAB
End
Close CUR_MOV
Deallocate CUR_MOV
Set @tmp_ano_mes = Substring(@AS_PERIODO,1,6)
SELECT @tmp_ano_mes AS 'PERIODO', * FROM #TMP_REPORT
DROP TABLE #TMP_REPORT
END
De ese procedimiento quiero crear un DW, pero me salta el siguiente error:
---------------------------
DataWindow Wizard
---------------------------
Cannot create DataWindow.
'Index #0 Message: Sintaxis incorrecta cerca de 'ADD'. NativeError: 102 Source: Microsoft OLE DB Provider for SQL Server SQLState: 42000
1 execute dbo.USP_RPT_MOV_MES2;1 @AS_EMPRESA = :AS_EMPRESA, @AS_PERIODO = :AS_PERIODO'
---------------------------
Aceptar
---------------------------
Quisiera saber si ese inconveniente tiene solución o quizas deba pensar otra forma de hacer mi procedimiento.
Atento a sus comentarios
Valora esta pregunta


0