loop infinito en cursor
Publicado por Thomas (1 intervención) el 08/10/2019 14:48:02
Hola chicos tengo el siguiente proceso almacenado que no funciona , cada vez que lo ejecuto se queda en un bucle infinito. el objetivo del SP es que recorrer la tabla productos por cada fila evaluar el resultado y si el resultado al contar las filas es mayor a 0 se debe insertar el código en una tabla , si el resultado es 0 se debe insertar el registro según la tercera query.
Gracias!
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
ALTER PROCEDURE [dbo].[SP_Priorizacion_Fuentes]
--@ano VARCHAR(10)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @suministro AS VARCHAR(8000)
DECLARE @QUERY AS VARCHAR (800)
DECLARE @fecha as varchar (90)
DECLARE @FUENTE AS VARCHAR (800)
DECLARE @ID as varchar (90)
DECLARE @NOMBRE AS VARCHAR (800)
DECLARE #P CURSOR FOR
-- Cursor para recorrer rescatar todos los Tags a procesar
SELECT NRO_SUMINISTRO
FROM PRODUCTO
group by nro_suministro
OPEN #P
-- Recupera primera fila
FETCH NEXT FROM #P INTO
@suministro
-- check for a new row
WHILE @@FETCH_STATUS=0
BEGIN
SELECT @QUERY = count (*) from (
SELECT TOP 1 [ID]
,[NRO_SUMINISTRO]
,[FEC_MAX]
,[FUENTE]
,[NOMBRE]
FROM PRODUCTO
WHERE ( FUENTE = 1 OR FUENTE =2 OR FUENTE = 3 ) and nro_suministro = @suministro
order by FEC_MAX DESC
) a
--SELECT @QUERY;
IF @QUERY > 0
BEGIN
INSERT INTO dbo.PRUEBA_PRIORIZACION
SELECT @suministro,@fecha,@NOMBRE, @FUENTE , @ID ;
END
if @QUERY < 0
INSERT INTO PRUEBA_PRIORIZACION
SELECT top 1 @suministro,@fecha,@NOMBRE, @FUENTE , @ID
FROM PRUEBA_PRIORIZACION
WHERE nro_suministro = @suministro
order by FUENTE ASC
END
FETCH NEXT FROM #P INTO @suministro
END
CLOSE #P
DEALLOCATE #P
Gracias!
Valora esta pregunta
0