Generalizada Invocación
Generalizada invocación permite un subtipo para invocar un método de un tipo primario (supertipo) con la siguiente sintaxis.El siguiente ejemplo muestra esto en acción.(AUTO COMO supertype_name). Method_name
En primer lugar, crear un tipo con algunos atributos y una función miembro.
CREAR O CAMBIAR TIPO my_type como objeto (
número de identificación,
Descripción VARCHAR2 (50),
Show_attributes funciones miembro RETORNO VARCHAR2)
NO FINAL;
/
CREAR O CAMBIAR my_type tipo de cuerpo como
Show_attributes funciones miembro RETORNO VARCHAR2 IS
INICIO
RETURN 'id =' | | Identificación | | 'descripción =' | | descripción;
END;
END;
/
A continuación, crear un subtipo de este objeto, lo que añade un nuevo atributo y método, así como anular la
show_attributes función miembro.
CREAR O CAMBIAR my_subtype tipo bajo my_type (
short_desc VARCHAR2 (10),
ABSOLUTA show_attributes función miembro RETORNO VARCHAR2,
Show_parent_attributes funciones miembro RETORNO VARCHAR2);
/
CREAR O CAMBIAR my_subtype tipo de cuerpo como
ABSOLUTA show_attributes miembro de devolución de funciones VARCHAR2 IS
INICIO
RETURN (yo como my_type) show_attributes | | 'short_desc =' | | short_desc.;
END;
Show_parent_attributes funciones miembro RETORNO VARCHAR2 IS
INICIO
RETURN (yo como my_type) show_attributes.;
END;
END;
/
Observe
el método del tipo de padres que se accede utilizando la sintaxis de
invocación generalizada. El código siguiente crea un subtipo, y llama a
sus funciones miembro.
JUEGO DE serveroutput
DECLARE
my_subtype l_subtype: = my_subtype (1, 'Descripción extensa para el 1', 'S descripción 1');
INICIO
DBMS_OUTPUT.PUT_LINE ("show_attributes = '| | l_subtype.show_attributes);
DBMS_OUTPUT.PUT_LINE ("show_parent_attributes = '| | l_subtype.show_parent_attributes);
END;
/
show_attributes = id = 1 Descripción descripción = largo por 1 short_desc Desc = S 1
show_parent_attributes = id = 1 = Descripción detallada descripción de un
PL / SQL terminado con éxito.
SQL>
Un
tipo se puede invocar a las funciones de miembro de cualquier tipo
primario de esta manera, independientemente de la profundidad de la
herencia.La notación con nombre y mixtos en las invocaciones del Subprograma PL / SQL
Antes de 11g, PL / SQL invoca desde SQL tenía que tener sus parámetros pasados usando la notación posicional, lo que hace difícil determinar el significado de los parámetros. Oracle 11g permite la notación posicional, el nombre y la mezcla que se utiliza cuando se llama PL / SQL de SQL, como se muestra a continuación.
- Construir una función de prueba con múltiples parámetros.
CREAR O CAMBIAR test_func FUNCIÓN (p_value_1 EN INCUMPLIMIENTO número 0,
p_value_2 EN número predeterminado 0)
Devuelve el número AS
INICIO
RETORNO p_value_1 + p_value_2;
END test_func;
/
Función creada.
SQL> - la notación posicional.
SQL> SELECT test_func (10, 20) de la doble;
TEST_FUNC (10,20)
----------------
30
Una fila seleccionada.
SQL> - notación mixta.
SQL> SELECT test_func (10, p_value_2 => 20) de la doble;
TEST_FUNC (10, P_VALUE_2 => 20)
---------------------------
30
Una fila seleccionada.
SQL> - nombre de notación.
SQL> SELECT test_func (p_value_1 => 10, p_value_2 => 20) de la doble;
TEST_FUNC (P_VALUE_1 => 10, P_VALUE_2 => 20)
--------------------------------------
30
Una fila seleccionada.
SQL>
Fuente: http://oracle11g-newfeatures.blogspot.com.es/p/pl-sql-nuevas-caracteristicas-y-mejoras.html
No hay comentarios:
Publicar un comentario