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);