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. 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.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; /
Un tipo se puede invocar a las funciones de miembro de cualquier tipo primario de esta manera, independientemente de la profundidad de la herencia.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>
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