SQL - SQL bucle - subconsultas

 
Vista:
sin imagen de perfil
Val: 8
Ha disminuido su posición en 9 puestos en SQL (en relación al último mes)
Gráfica de SQL

SQL bucle - subconsultas

Publicado por Alex (5 intervenciones) el 02/12/2019 14:08:13
Hola,

estoy bloqueado con un ejercicio de SQL, el problema es el siguiente, tengo unos datos con datos de materiales y datos de materiales padre. Tengo que obtener dado un código de material, el código padre del mayor nivel (es decir, si el material padre de ese primer nivel tiene otro material padre, sería ese segundo material padre el que hay que reportar). He probado con el siguiente código, pero no consigo que el bucle, una vez encuentra el primer material padre, entre con ese resultado a hacer una nueva búsqueda. Creo que el problema es que no estoy aplicando correctamente la estructura del bucle.

si me podéis ayudar, muchas 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
CREATE FUNCTION material_highest_parent(codigo_material tb_material.material_code%type)
RETURNS VARCHAR(15) AS $$
DECLARE
parent_material tb_material.material_code%type;
variable tb_material.material_code%type;
variable2 tb_material.material_code%type;
BEGIN
IF NOT EXISTS (SELECT material_code FROM tb_material WHERE material_code=codigo_material) THEN
	RAISE EXCEPTION
		'El material % no existe', codigo_material;
ELSE
	variable=codigo_material;
	FOR parent_material IN SELECT parent_material_code FROM tb_material
	WHERE material_code=variable LOOP
		IF parent_material IS NULL THEN
			EXIT;
		ELSIF parent_material IS NOT NULL THEN
			variable=parent_material;
		END IF;
	END LOOP;
END IF;
RETURN variable;
END;
$$ LANGUAGE plpgsql;
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