Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.
Oracle/PLSQL: función ROWNUM
Este tutorial de Oracle explica cómo usar Oracle/PLSQL función ROWNUM Con sintaxis y ejemplos.
describir
La función ROWNUM de Oracle/PLSQL devuelve un número que representa el orden en que Oracle selecciona las filas de una tabla o tabla de combinación. La primera fila tiene un ROWNUM de 1, la segunda fila tiene un ROWNUM de 2 y así sucesivamente.
sintaxis
La sintaxis de la función ROWNUM en Oracle/PLSQL es:
ROWNUM
parámetro o parámetro
La función ROWNUM no tiene argumentos ni argumentos.
notas
- La función ROWNUM a veces se denomina pseudocolumna en Oracle.
devolver los bienes
La función ROWNUM devuelve un valor numérico.
aplicar para
La función ROWNUM se puede utilizar en las siguientes versiones de Oracle/PLSQL:
- Oráculo 12c, Oráculo 11g, Oráculo 10g, Oráculo 9i, Oráculo 8i
Ejemplo de DDL/DML
Si desea seguir este tutorial, obtenga DDL para crear las tablas y DML para completar los datos. ¡Entonces pruebe los ejemplos en su propia base de datos!
ejemplo
Veamos algunos ejemplos de la función ROWNUM de Oracle y exploremos cómo usar la función ROWNUM en Oracle/PLSQL.
En este ejemplo de ROWNUM, tenemos una tabla llamada clientes con los siguientes datos:
CUSTOMER_ID LAST_NAME FIRST_NAME FAVORITE_WEBSITE ----------- --------- ---------- --------------------- 4000 Jackson Joe www.prograrmaplus.com 5000 Smith Jane www.digminecraft.com 6000 Ferguson Samantha www.bigactivities.com 7000 Reynolds Allen www.checkyourmath.com 8000 Anderson Paige 9000 Johnson Derek www.prograrmaplus.com
Ahora demostremos cómo funciona la función ROWNUM seleccionando datos de la tabla de clientes. Ingrese la siguiente instrucción SQL en Oracle:
SELECT ROWNUM, customers.* FROM customers WHERE customer_id > 4500;
Estos son los resultados que deberías ver:
ROWNUM CUSTOMER_ID LAST_NAME FIRST_NAME FAVORITE_WEBSITE ------ ----------- --------- ---------- --------------------- 1 5000 Smith Jane www.digminecraft.com 2 6000 Ferguson Samantha www.bigactivities.com 3 7000 Reynolds Allen www.checkyourmath.com 4 8000 Anderson Paige 5 9000 Johnson Derek www.prograrmaplus.com
En este ejemplo, la función ROWNUM devuelve 1 para el primer registro, 2 para el segundo registro y así sucesivamente. Dado que este es un ejemplo muy simple, parece que la función ROWNUM es simple de usar, pero es un poco más complicada de lo que piensa.
Compliquemos el ejemplo introduciendo una cláusula ORDER BY y ordenemos los resultados por apellido ascendente. Ingrese la siguiente instrucción SELECT en Oracle:
SELECT ROWNUM, customers.* FROM customers WHERE customer_id > 4500 ORDER BY last_name;
Deberías ver los siguientes resultados:
ROWNUM CUSTOMER_ID LAST_NAME FIRST_NAME FAVORITE_WEBSITE ------ ----------- --------- ---------- --------------------- 4 8000 Anderson Paige 2 6000 Ferguson Samantha www.bigactivities.com 5 9000 Johnson Derek www.prograrmaplus.com 3 7000 Reynolds Allen www.checkyourmath.com 1 5000 Smith Jane www.digminecraft.com
Puede esperar que la primera fila del conjunto de resultados tenga un valor ROWNUM de 1, pero en este caso tiene un valor ROWNUM de 4. ¿Por qué es esto? Bueno, depende de cómo accede Oracle a las filas de la consulta. Por ejemplo, sus resultados pueden variar según muchos factores (es decir, el orden en que insertó datos en la tabla o si hay un índice en la tabla).
Debido a estos factores, existen formas correctas e incorrectas de usar la función ROWNUM.
Forma recomendada de usar ROWNUM
La forma más confiable de usar ROWNUM es usar una subconsulta para filtrar y ordenar los resultados, luego colocar la función ROWNUM en el SELECT externo. Ingrese el siguiente SELECCIONAR en Oracle:
SELECT ROWNUM, a.* FROM (SELECT customers.* FROM customers WHERE customer_id > 4500 ORDER BY last_name) a;
Estos son los resultados que deberías ver:
ROWNUM CUSTOMER_ID LAST_NAME FIRST_NAME FAVORITE_WEBSITE ------ ----------- --------- ---------- --------------------- 1 8000 Anderson Paige 2 6000 Ferguson Samantha www.bigactivities.com 3 9000 Johnson Derek www.prograrmaplus.com 4 7000 Reynolds Allen www.checkyourmath.com 5 5000 Smith Jane www.digminecraft.com
Al usar la subconsulta de esta manera, obliga a ROWNUM a ordenar los registros correctamente, comenzando en 1 para el primer registro, comenzando en 2, y así sucesivamente.
Utilice ROWNUM para limitar los resultados
La función ROWNUM también es útil si desea limitar los resultados de la consulta. Por ejemplo, puede devolver los 2 primeros resultados. Ingrese la siguiente instrucción SQL en Oracle:
SELECT * FROM (SELECT customers.* FROM customers WHERE customer_id > 4500 ORDER BY last_name) WHERE ROWNUM < 3;
Deberías ver los siguientes resultados:
CUSTOMER_ID LAST_NAME FIRST_NAME FAVORITE_WEBSITE ----------- --------- ---------- --------------------- 8000 Anderson Paige 6000 Ferguson Samantha www.bigactivities.com
En este ejemplo, la función ROWNUM devolverá los primeros 2 resultados porque queremos ROWNUM < 3
.
Si queremos obtener los últimos 2 resultados, podemos cambiar el orden de clasificación de la subconsulta a last_name DESC
Ingrese la siguiente consulta en Oracle:
SELECT * FROM (SELECT customers.* FROM customers WHERE customer_id > 4500 ORDER BY last_name DESC) WHERE ROWNUM < 3;
Estos son los resultados que deberías ver:
CUSTOMER_ID LAST_NAME FIRST_NAME FAVORITE_WEBSITE ----------- --------- ---------- ------------------- 5000 Smith Jane www.digminecraft.com 7000 Reynolds Allen www.checkyourmath.com
Ahora tenemos los 2 últimos resultados porque hemos ordenado last_name en orden descendente.