
Explicacion Funcion
Publicado por Ivan (1 intervención) el 20/05/2017 19:08:45
Buenas tardes;
Estoy estudiando DAM y en bases de datos estamos con PL/SQL de Oracle. En un ejercicio que debemos realizar no entiendo una función que me han pasado:
Me gustaría que me explicarais realmente como funciona esa función "Comprobación"
Entiendo que coge el valor del "IDENTIFICADOR.FAMILIAS" y se lo asigna a ES_PADRE y si este es igual a ID_ORIGEN return TRUE , pero si no es lanza la función" ELSE RETURN COMPROBACION(ID_ORIGEN, ES_PADRE);" , esto es lo que no entiendo es como si volviera a lanzar la misma función pero cambia los parametros.
A ver si me podeis ayudar a comprenderla.
Gracias .
Estoy estudiando DAM y en bases de datos estamos con PL/SQL de Oracle. En un ejercicio que debemos realizar no entiendo una función que me han pasado:
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
CREATE OR REPLACE PROCEDURE MOVER_FAMILIA (FAM_DESTINO NUMBER, FAM_ORIGEN NUMBER)
IS
--CURSOR VARIABLE
TYPE CURSOR_FAMILIAS IS REF CURSOR RETURN FAMILIAS%TYPE; ---DEFINO REF CURSOR
CUR_FAM CURSOR_FAMILIAS; ---DECLARO VARIABLE DE ESE TIPO CURSOR
FAM CUR_FAM%ROWTYPE; --- VARIABLE QUE RECOGE TODAS LAS COLUMNAS DE CUR_FAM "LISTA VARIABLES"
ES_PADRE NUMBER;
EXISTE_ORIGEN BOOLEAN;
EXISTE_DESTINO BOOLEAN;
/* Se debe comprobar que la familia destino no es hija de la familia origen.
Para ello debemos crear una función recursiva auxiliar que haga dicha comprobación.*/
FUNCTION COMPROBACION (ID_ORIGEN NUMBER, ID_DESTINO NUMBER) RETURN BOOLEAN IS HIJA BOOLEAN;
BEGIN
SELECT FAM INTO ES_PADRE FROM FAMILIAS WHERE IDENTIFICADOR.FAMILIAS = ID_DESTINO;
IF ES_PADRE IS NULL THEN RETURN FALSE;
ELSE IF ES_PADRE = ID_ORIGEN THEN RETURN TRUE;
ELSE RETURN COMPROBACION(ID_ORIGEN, ES_PADRE);
END IF;
END IF;
END COMPROBACION;
BEGIN
Me gustaría que me explicarais realmente como funciona esa función "Comprobación"
Entiendo que coge el valor del "IDENTIFICADOR.FAMILIAS" y se lo asigna a ES_PADRE y si este es igual a ID_ORIGEN return TRUE , pero si no es lanza la función" ELSE RETURN COMPROBACION(ID_ORIGEN, ES_PADRE);" , esto es lo que no entiendo es como si volviera a lanzar la misma función pero cambia los parametros.
A ver si me podeis ayudar a comprenderla.
Gracias .
Valora esta pregunta


0