返回oracle中受影响的行数以用于复杂查询

时间:2011-04-18 07:18:28

标签: oracle sqlplus

我有很多复杂的连接查询,我想要返回受影响的行数。 比如选择100,插入50等。

我不想更改此操作的查询。我试过了SQL%ROWCOUNT。但它不起作用。请帮助我。

2 个答案:

答案 0 :(得分:1)

要使用sql%rowcount,您需要在select / insert / update / delete之后直接使用 。例如:

declare
  v_date date;
  v_cnt pls_integer := 0;
  v_cnt2 pls_integer := 0;
begin

  select sysdate into v_date from dual;

  v_cnt := sql%rowcount;
  dbms_output.put_line('rowcount: ' || v_cnt);

  commit;

  v_cnt2 := sql%rowcount;
  dbms_output.put_line('rowcount2: ' || v_cnt2);

end;

输出:

rowcount: 1
rowcount2: 0

希望有所帮助。

答案 1 :(得分:0)

如果我理解正确,你想检查查询的内部工作原理(连接表的基数等) - 是吗?如果是,您需要查看Oracle为您的查询生成的执行计划。尝试这样的命令:

EXPLAIN PLAN FOR SELECT * FROM ...; // <-- insert your query here
SELECT * FROM TABLE(dbms_xplan.display);

(有关其他选项和更多信息,请参阅SQL*Plus FAQ。)