Funcion con cursor no muestra resultados
Publicado por Angel (2 intervenciones) el 02/05/2017 13:04:01
Buenos días a todos,
llevo varios días en el trabajo tratando de crear una función con un cursor que muestre las cuentas que se han creado en el ultimo mes y que las compruebe con las que son E o B(inactivos o bloqueados), comprobando si corresponden el telefono, movil o email nuevo con las cuentas de estado E o B.
No me da error de sintaxis, pero no me muestra resultados.... He de decir que soy bastante nuevo en sql server.
Cualquier ayuda será bienvenida, gracias de antemano
llevo varios días en el trabajo tratando de crear una función con un cursor que muestre las cuentas que se han creado en el ultimo mes y que las compruebe con las que son E o B(inactivos o bloqueados), comprobando si corresponden el telefono, movil o email nuevo con las cuentas de estado E o B.
No me da error de sintaxis, pero no me muestra resultados.... He de decir que soy bastante nuevo en sql server.
Cualquier ayuda será bienvenida, gracias de antemano
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
USE [BasedeDatos];
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[Morosos]()
RETURNS @TablaResultante TABLE
(
CODIGOID uniqueidentifier,
TELEFONO nvarchar(25),
MOVIL nvarchar(25),
CORREO nvarchar (128),
NOMBRE nvarchar(100),
ESTATUS nvarchar(1),
STATUSSINCE DATETIME,
NOMBRECUENTA nvarchar(50),
CMP_CODE nvarchar(20)
)
AS
BEGIN
-- Fill the table variable with the rows for your result set
DECLARE
@codigoo uniqueidentifier,
@telefono nvarchar(25),
@movil nvarchar (25),
@correo nvarchar(128),
@nombre nvarchar (100),
@status nvarchar (1),
@statussince DATETIME,
@nombrecuenta nvarchar (50),
@codigo nvarchar(20);
DECLARE listamorosos CURSOR FOR
SELECT cicmpy.cmp_code, cicmpy.Status, cicmpy.cmp_name, cicmpy.status_since, cicntp.FullName, cicntp.cnt_f_tel, cicntp.cnt_f_mobile, cicntp.cnt_email, cicntp.cnt_id
FROM cicmpy WITH (NOLOCK) INNER JOIN
cicntp WITH (NOLOCK) ON cicmpy.cnt_id = cicntp.cnt_id
WHERE (cicmpy.syscreated > GETDATE() - 100) AND (cicntp.cnt_f_tel IS NOT NULL) AND (cicntp.cnt_f_tel IN
(SELECT cicntp_3.cnt_f_tel
FROM cicmpy AS cicmpy_3 WITH (NOLOCK) INNER JOIN
cicntp AS cicntp_3 WITH (NOLOCK) ON cicmpy_3.cnt_id = cicntp_3.cnt_id
WHERE (cicmpy_3.cmp_status = 'E') OR
(cicmpy_3.cmp_status = 'B'))) AND (cicntp.cnt_f_mobile IS NOT NULL) AND (cicntp.cnt_f_mobile IN
(SELECT cicntp_2.cnt_f_mobile
FROM cicmpy AS cicmpy_2 WITH (NOLOCK) INNER JOIN
cicntp AS cicntp_2 WITH (NOLOCK) ON cicmpy_2.cnt_id = cicntp_2.cnt_id
WHERE (cicmpy_2.cmp_status = 'E') OR
(cicmpy_2.cmp_status = 'B'))) AND (cicntp.cnt_email IS NOT NULL) AND (cicntp.cnt_email NOT LIKE '-@%') AND (cicntp.cnt_email NOT LIKE 'notiene%')
AND (cicntp.cnt_email IN
(SELECT cicntp_1.cnt_email
FROM cicmpy AS cicmpy_1 WITH (NOLOCK) INNER JOIN
cicntp AS cicntp_1 WITH (NOLOCK) ON cicmpy_1.cnt_id = cicntp_1.cnt_id
WHERE (cicmpy_1.cmp_status = 'E') OR
(cicmpy_1.cmp_status = 'B')))
OPEN listamorosos
FETCH NEXT FROM listamorosos INTO @codigo, @status, @nombre, @statussince, @nombrecuenta, @telefono, @movil, @correo, @codigoo;
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT @TablaResultante
SELECT @codigo, @status, @nombre, @statussince, @nombrecuenta, @telefono, @movil, @correo, cicmpy.cmp_code FROM cicmpy INNER JOIN cicntp ON cicmpy.cnt_id = cicntp.cnt_id
WHERE ((cicntp.cnt_f_tel = @telefono OR cicntp.cnt_f_mobile = @movil OR cicntp.cnt_email = @correo)
AND (@status = 'E') OR (@status ='B'))
FETCH NEXT FROM listamorosos INTO @codigo, @status, @nombre, @statussince, @nombrecuenta, @telefono, @movil, @correo, @codigoo
END;
CLOSE listamorosos;
DEALLOCATE listamorosos;
RETURN
END
GO
Valora esta pregunta


0