MySQL - Ayuda sobre un ejercicio sobre vectores

 
Vista:
sin imagen de perfil

Ayuda sobre un ejercicio sobre vectores

Publicado por javier (1 intervención) el 05/04/2023 00:55:02
Hola estoy intentando hacer un procedimiento que tenga como objetivo asignar a un vector .Tres valores
(Vector ,Indice,Elemento) y cuando intento ejecutarlo me dice

CALL Asignarv(0, 1, 1) 0 row(s) affected, 1 warning(s): 1329 No data - zero rows fetched,


Este es mi codigo




DROP PROCEDURE IF EXISTS Asignarv;
DELIMITER //
CREATE PROCEDURE Asignarv(IN PVector TINYINT unsigned, IN PIndice int unsigned, IN PElemento INT )
BEGIN
DECLARE TamVector INT DEFAULT 0;
SELECT Elemento INTO TamVector FROM Vectores WHERE Vector = PVector AND Indice != -1;

IF EXISTS(SELECT * FROM InfoVectores WHERE Vector = PVector ) THEN

-- Verificar que el vector existe y el índice está dentro del rango permitido
IF TamVector IS NOT NULL AND PIndice >= 0 AND PIndice < TamVector THEN
-- Si un elemento nuevo, INSERTAR, y si ya existe, UPDATE en la tabla Vectores
IF EXISTS(SELECT * FROM Vectores WHERE Vector = PVector AND Indice = PIndice) THEN
UPDATE Vectores SET Elemento = PElemento WHERE Vector = PVector AND Indice = PIndice;
ELSE
INSERT INTO Vectores (Vector, Indice, Elemento) VALUES (PVector, PIndice, PElemento);
END IF;
END IF;
END IF;
END//
DELIMITER ;



Y estas son las tablas


DROP TABLE IF EXISTS Vectores;
CREATE TABLE Vectores (
Vector TINYINT UNSIGNED NOT NULL, -- Identificador de cada vector (permite 256 vectores)
Indice INTEGER UNSIGNED NOT NULL, -- índice de un elemento del vector (hasta 4.294.967.295)
Elemento INT, -- Creamos un vector de enteros
PRIMARY KEY (Vector, Indice)
);
DROP TABLE IF EXISTS InfoVectores; -- Podemos usar esta tabla si lo creeemos conveniente
CREATE TABLE InfoVectores (
Vector TINYINT UNSIGNED NOT NULL, -- Identificador de cada vector
NumElementos INT UNSIGNED, -- Los índices de un vector irán de 0 a NumElementos-1
PRIMARY KEY (Vector)
);

Muchas gracias y adios.
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