我想获取已删除记录的行数。下面的查询返回将受到影响的记录数,但
SELECT COUNT(*) FROM suppliers
WHERE EXISTS
( SELECT customers.customer_name
FROM customers
WHERE customers.customer_id = suppliers.supplier_id
AND customer_id > 25 );
我需要这样的东西,行被删除后,我可以在前端显示已删除的记录数。
SELECT COUNT(*) FROM suppliers(
DELETE from supplier(
WHERE EXISTS
( SELECT customers.customer_name
FROM customers
WHERE customers.customer_id = suppliers.supplier_id
AND customer_id > 25 ));
我不想运行两次查询,一次是获取将被删除的记录数,如果它大于 0,那么我运行第二个查询来删除记录。
最佳答案
您可以使用 RETURNING INTO
子句来获取所有被删除的行——然后计算这些行。
一种更简单的计数方法是 PL/SQL 代码中的 SQL%ROWCOUNT
。像这样的东西:
BEGIN
DELETE from supplier(
WHERE EXISTS
( SELECT customers.customer_name
FROM customers
WHERE customers.customer_id = suppliers.supplier_id
AND customer_id > 25 );
dbms_output.put_line(SQL%ROWCOUNT);
END;
关于sql - 获取删除的记录数sql,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31507423/