sql >> Base de Datos >  >> RDS >> Oracle

Método de recopilación:función LIMIT en la base de datos Oracle

El tutorial de PL/SQL de hoy trata sobre el método de recopilación LIMIT. Ya hemos visto 4 funciones en esta serie de métodos de recopilación que son:Count, Exists, First y Last. El límite es la quinta función que aprenderemos hoy.

¿Qué es el método de recopilación LIMIT?

El método de colección LIMIT, que en realidad es una función PL/SQL, devuelve el número máximo de elementos que puede contener VARRAY. Esto significa que al utilizar esta función puede averiguar cuántos elementos puede almacenar en un VARRAY.

¿Qué devuelve el método de recopilación LIMIT?

El método de recopilación LIMIT devuelve un valor de tipo PLS_INTEGER?

¿Esta función también funciona con otras dos colecciones de tablas anidadas y matriz asociativa?

El método de recopilación LIMIT solo funciona con VARRAY. Si se aplicó a una tabla anidada o una matriz asociativa, esta función devolverá un valor NULL o Sin valor. Entonces la respuesta es No, la función de colección LIMIT no funciona con tablas anidadas y matrices asociativas.

¿Cuál es la especificación de la función de recopilación LIMIT?

La especificación de la función de colección LIMIT es:

FUNCTION LIMIT RETURN pls_integer;

¿La función de recopilación LIMIT genera alguna excepción? En caso afirmativo, ¿cuándo?

Sí, la función LIMIT genera una excepción COLLECTION_IS_NULL si se aplica a una tabla anidada no inicializada o VARRAY.

¿Puede mostrarnos un ejemplo de cómo usar la función LIMIT?

Seguro Por qué no. Aquí hay un ejemplo muy simple que demuestra cómo usar correctamente la función de colección LIMIT con VARRAY.

SET SERVEROUTPUT ON;
DECLARE
    TYPE inBlock_vry IS VARRAY (5) OF NUMBER;
    vry_obj inBlock_vry := inBlock_vry();
BEGIN
 --Let's find out total number of indexes in the above VARRAY
    DBMS_OUTPUT.PUT_LINE ('Total Indexes '||vry_obj.LIMIT);
END;
/

¿No tenemos la función COUNT que da la misma información?

La función de recopilación LIMIT devuelve el número total de índices de un VARRAY independientemente de si estos índices están vacíos o contienen algunos datos . Comprueba la definición de VARRAY y ve el número total de elementos que está diseñado para almacenar y devuelve ese número.

Mientras que la función de recopilación COUNT devuelve el número de índices que no están vacíos y retener algunos datos .

Echa un vistazo a este programa PL/SQL. Esto lo ayudará a comprender más claramente la diferencia entre el método de recopilación COUNT y LIMIT.

SET SERVEROUTPUT ON;
DECLARE
    --Create VARRAY of 5 element
    TYPE inblock_vry IS
        VARRAY ( 5 ) OF NUMBER;
    vry_obj   inblock_vry := inblock_vry ();
BEGIN
    --Insert into VARRAY
    	vry_obj.extend;
    	vry_obj(1) := 10 * 2; 
dbms_output.put_line('Total Number of Index ' || vry_obj.limit);
dbms_output.put_line('Total Number of Index which are occupied ' || vry_obj.count);
END;
/

En el código anterior tenemos un VARRAY que es capaz de contener 5 elementos del tipo de datos NÚMERO. En la sección de ejecución tenemos dos sentencias de salida DBMS. La primera declaración de salida que muestra el resultado de la función LIMIT devolverá 5 porque esa es la fuerza total de nuestro VARRAY, mientras que la segunda declaración de salida devolverá 1 porque entre esos 5 índices solo hay un índice que tiene algunos datos almacenados.

Usted dijo en el video que nos mostrará cómo averiguar la cantidad total de elementos que no se usaron para que almacenemos datos en un varray usando el método de recopilación LIMIT?

¿Es eso así? ¿He dicho eso? Solo estoy bromeando.

Averiguar el número de índices vacantes para su uso en un VARRAY es muy fácil. Déjame decirte cómo.

Como dije anteriormente, la función de recopilación COUNT devuelve la cantidad de índices que tienen datos almacenados y la función de recopilación LIMIT devuelve la cantidad total de índices que puede acomodar VARRAY.

Si resta el resultado de la función de conteo del resultado de la función LIMIT, obtendrá la cantidad total de elementos que quedan sin usar para almacenar datos en un varray. Por ejemplo

DECLARE
    --Create VARRAY of 5 element
    TYPE inblock_vry IS
        VARRAY ( 5 ) OF NUMBER;
    vry_obj   inblock_vry := inblock_vry ();
BEGIN
    --Insert into VARRAY
    vry_obj.extend;
    vry_obj(1) := 10 * 2;
    dbms_output.put_line('Total Number of Index ' || vry_obj.limit);
    dbms_output.put_line('Total Number of Index which are occupied ' || vry_obj.count);
    dbms_output.put_line('Total Number of Vacant index left for use '
                            || (vry_obj.limit - vry_obj.count) );
END;
/

Ese es el tutorial de PL/SQL que responde a todas las preguntas que puede esperar en el examen de certificación, así como en su entrevista sobre el método de recopilación LIMIT en la base de datos Oracle.

¿Hay algo que olvidé cubrir o mencionar en este tutorial? Si es así, por favor déjame. Escríbeme a mi Twitter o Facebook.

Gracias que tengas un gran día.