Está en la página 1de 2

ORACLE

https://jorgesanchez.net/manuales/sql/select-basico-sql2016.html

For update:

Es una cláusula no estándar que posee Oracle y que permite bloquear las filas que
aparecen en una instrucción SELECT de modo que esta instrucción genera una
transacción (si no estuviéramos ya en una). La razón es que nadie pueda modificar esas
filas a fin de trabajar sin problemas con ellas.

Esta cláusula se coloca antes de la cláusula ORDER BY. Ejemplo:

SELECT cif, nombre, localidad, direccion FROM empresas


WHERE provincia=’Palencia’
FOR UPDATE;

Por supuesto sólo podemos bloquear filas que otros usuarios no estén bloqueando. Y,
puesto que esta instrucción en realidad es de tipo DML, para finalizar el bloqueo
deberemos finalizar la transacción (con ROLLBACK o COMMIT).

Podemos especificar que se bloquee sólo una o más columnas:

SELECT cif, nombre, localidad, direccion FROM empresas


WHERE provincia=’Palencia’
FOR UPDATE OF direccion;

En el código anterior se bloquea solo la columna dirección.

Incluso podemos indicar un tiempo máximo de bloqueo:

SELECT cif, nombre, localidad, direccion FROM empresas


WHERE provincia=’Palencia’
FOR UPDATE WAIT 10;
--Bloquea las filas durante 10 segundos

Rownum

La función ROWNUM devuelve el número de la fila de una consulta. Por ejemplo en:

SELECT ROWNUM, edad, nombre FROM clientes

Aparece el número de cada fila en la posición de la tabla. Esa función actualiza sus
valores usando subconsultas. De modo que la consulta:

SELECT ROWNUM AS ranking, edad, nombre


FROM (
SELECT edad, nombre FROM clientes ORDER BY edad DESC
);
Puesto que:

SELECT edad, nombre FROM clientes ORDER BY edad DESC;

obtiene una lista de los clientes ordenada por edad, el SELECT superior obtendrá esa
lista pero mostrando el orden de las filas en esa consulta. Eso permite hacer consultas de
tipo top-n, (los n más....).

Por ejemplo para sacar el top-10 de la edad de los clientes (los 10 clientes más mayores)
´, haríamos:

SELECT ROWNUM AS ranking, edad, nombre FROM clientes


FROM (
SELECT edad, nombre FROM clientes ORDER BY edad DESC
)
WHERE ROWNUM<=10;

Concatenación de textos

El operador de concatenar texto permite unir dos textos. Normalmente se usa para juntar
resultados de diferentes expresiones en una miasma columna de una tabla. Todas las
bases de datos incluyen algún operador para encadenar textos. En SQL Server y otros
gestores es el signo + (suma), en Oracle son los signos ||. Ejemplo (Oracle):

SELECT tipo, modelo, tipo || ‘-’ || modelo “Clave Pieza”


FROM piezas;

El resultado sería:

Tip Clave
Modelo
o Pieza
AR 6 AR-6
AR 7 AR-7
AR 8 AR-8
AR 9 AR-9
AR 12 AR-12
AR 15 AR-15
AR 20 AR-20
AR 21 AR-21
BI 10 BI-10
BI 20 BI-20
BI 22 BI-22
BI 24 BI-24

En la mayoría de bases de datos, la función CONCAT (se describe más adelante) realiza


la misma función.

También podría gustarte