
Consulta por Cursores en T-SQL
Publicado por Silvina (6 intervenciones) el 11/12/2016 23:45:32
Buenas tardes,
Estoy practicando crear cursores en T-SQL y el sql server me devuelve el siguiente mensaje de error:
"La subconsulta ha devuelto más de un valor, lo que no es correcto cuando va a continuación de =, !=, <, <=, >, >= o cuando se utiliza como expresión."
Necesito saber qué es lo que estoy haciendo mal.
El Script que ejecuté es el siguiente:
Estoy practicando crear cursores en T-SQL y el sql server me devuelve el siguiente mensaje de error:
"La subconsulta ha devuelto más de un valor, lo que no es correcto cuando va a continuación de =, !=, <, <=, >, >= o cuando se utiliza como expresión."
Necesito saber qué es lo que estoy haciendo mal.
El Script que ejecuté es el siguiente:
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
USE [PARCIAL ]
GO
-- Declaración Variables a utilizar
DECLARE @Cant INT
SET @Cant = 0
DECLARE @Pregunta INT
SET @Pregunta = (SELECT TOP 1 pregunta FROM PARCIAL.Logs)
DECLARE @PregAnterior INT
SET @PregAnterior = @Pregunta
DECLARE @EsCorrecta CHAR (1)
SET @EsCorrecta = (SELECT esCorrecta FROM PARCIAL.Respuestas WHERE pregunta = @Pregunta)
DECLARE @CondAnterior CHAR (1)
SET @CondAnterior = @Cant
DECLARE @Maximo INT
SET @Maximo = 0
-- Declaración del cursor
DECLARE Cursor_Cantidades CURSOR GLOBAL
SCROLL
FOR SELECT P.idPregunta
FROM PARCIAL.Preguntas AS P INNER JOIN PARCIAL.Logs AS L
ON L.pregunta = P.idPregunta INNER JOIN PARCIAL.Respuestas AS R
ON R.idRespuesta= L.respuesta
ORDER BY L.fechaHora
-- Apertura del cursor
OPEN Cursor_Cantidades
-- Lectura de la primera fila del cursor
FETCH Cursor_Cantidades INTO @Cant
WHILE ((@@FETCH_STATUS = 0) AND (@CondAnterior=@EsCorrecta))
BEGIN
IF (@PregAnterior=@Pregunta)
SET @Cant = @Cant + 1
-- Lectura de la siguiente fila de un cursor
FETCH Cursor_Cantidades INTO @Cant
SET @Pregunta = (SELECT pregunta FROM PARCIAL.Logs)
-- Fin del bucle WHILE
END
IF (@Maximo <= @Cant)
SET @Maximo = @Cant
-- Cierra el cursor
CLOSE Cursor_Cantidades
Valora esta pregunta


0