Oracle/PLSQL: la condición existe

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: la condición existe

Este tutorial de Oracle describe cómo usar Oracle Condición de existencia Con sintaxis y ejemplos.

La condición Oracle EXISTS se usa junto con una subconsulta, y la condición se considera “cumplida” si la subconsulta devuelve al menos una fila. Se puede usar en declaraciones SELECT, INSERT, UPDATE o DELETE.

sintaxis

La sintaxis de la condición EXISTS en Oracle/PLSQL es:

WHERE EXISTS ( subquery );

parámetro o parámetro

Subconsultas Una subconsulta es una instrucción SELECT. Si la subconsulta devuelve al menos un registro en su conjunto de resultados, la cláusula EXISTS se evaluará como verdadera y se cumplirá la condición EXISTS. Si la subconsulta no devuelve registros, la cláusula EXISTS se evaluará como falsa y la condición EXISTS no se cumplirá.

notas

  • Las declaraciones de Oracle SQL que usan la condición Oracle EXISTS son muy ineficientes porque la subconsulta se vuelve a ejecutar para cada fila en la tabla de consulta externa. Hay formas más eficientes de escribir la mayoría de las consultas que no usan condiciones EXISTS.

Ejemplo: uso de la instrucción SELECT

Veamos un ejemplo sencillo.

La siguiente es una declaración SELECT que usa la condición EXISTS:

SELECT *
FROM customers
WHERE EXISTS (SELECT *
              FROM order_details
              WHERE customers.customer_id = order_details.customer_id);

Este ejemplo de condición de Oracle EXISTS devolverá todos los registros de la tabla de clientes en los que al menos un registro de la tabla detalles_pedido tenga un id_cliente coincidente.

Ejemplo: declaración SELECT usando NOT EXISTS

La condición Oracle EXISTS también se puede combinar con el operador NOT.

Por ejemplo,

SELECT *
FROM customers
WHERE NOT EXISTS (SELECT *
                  FROM order_details
                  WHERE customers.customer_id = order_details.customer_id);

Este ejemplo de Oracle EXISTS devolverá todos los registros en la tabla de clientes No Un registro en la tabla order_details para un customer_id dado.

Ejemplo: uso de la instrucción INSERT

El siguiente es un ejemplo de una declaración INSERT usando una condición EXISTS:

INSERT INTO contacts
(contact_id, contact_name)
SELECT supplier_id, supplier_name
FROM suppliers
WHERE EXISTS (SELECT *
              FROM order_details
              WHERE suppliers.supplier_id = order_details.supplier_id);

Ejemplo: uso de la instrucción UPDATE

El siguiente es un ejemplo de una instrucción UPDATE que usa la condición EXISTS:

UPDATE suppliers
SET supplier_name = (SELECT customers.name
                     FROM customers
                     WHERE customers.customer_id = suppliers.supplier_id)
WHERE EXISTS (SELECT customers.name
              FROM customers
              WHERE customers.customer_id = suppliers.supplier_id);

Ejemplo: uso de la sentencia DELETE

El siguiente es un ejemplo de una instrucción DELETE que usa la condición EXISTS:

DELETE FROM suppliers
WHERE EXISTS (SELECT *
              FROM order_details
              WHERE suppliers.supplier_id = order_details.supplier_id);