我有很多复杂的连接查询,我想要返回受影响的行数。 比如选择100,插入50等。
我不想更改此操作的查询。我试过了SQL%ROWCOUNT
。但它不起作用。请帮助我。
答案 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。)