martes, 8 de abril de 2014

Nueva forma de crear tipos como funciones, en Oracle 11g


Generalizada Invocación

Generalizada invocación permite un subtipo para invocar un método de un tipo primario (supertipo) con la siguiente sintaxis. 
(AUTO COMO supertype_name). Method_name 
El siguiente ejemplo muestra esto en acción.

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