Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取sql中删除的记录数_Sql_Oracle_Sql Delete_Rowcount - Fatal编程技术网

获取sql中删除的记录数

获取sql中删除的记录数,sql,oracle,sql-delete,rowcount,Sql,Oracle,Sql Delete,Rowcount,我想得到删除了多少条记录的行数。下面的查询返回将受影响的记录数,但 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
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,那么我运行第二次查询删除记录。

您可以使用
返回到
子句获取要删除的所有行,然后对这些行进行计数

在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;
你可以用 声明@countDelete int 不计较 删除表名 哪里
选择@@ROWCOUNT

如何调用此SQL?这一点很重要,因为大多数工具集在运行DELETE命令时会自动返回受影响记录的数量。例如,在Java的JDBC体系结构中,
executeUpdate
命令返回一个整数,表示删除或更新的数字(取决于SQL)。那么@ROWCOUNT呢?您应该使用
RETURNING INTO
子句。确切的方法取决于调用的方式,但文档如下:。@schtever我使用REST模型服务调用查询时,得到的结果是调用
json
jquery
jsonp