Чтобы вернуть количество строк, затронутых в Oracle для сложных запросов - PullRequest
0 голосов
/ 18 апреля 2011

У меня так много сложных запросов на объединение, для которых я хочу вернуть количество затронутых строк. Скажи для выбора 100, вставьте 50 и т. Д.

Я не хочу менять запрос для этой операции. Я пытался SQL%ROWCOUNT. Но это не работает. Пожалуйста, помогите мне в этом.

Ответы [ 2 ]

1 голос
/ 18 апреля 2011

Чтобы использовать sql% rowcount, вам нужно использовать его напрямую после выбора / вставки / обновления / удаления. Например:

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

Надеюсь, это поможет.

0 голосов
/ 18 апреля 2011

Если я правильно понял, вы хотите изучить внутреннюю работу вашего запроса (количество объединяемых таблиц и т. Д.) - это правильно?Если да, вам нужно посмотреть план выполнения, который Oracle сгенерирует для вашего запроса.Попробуйте команду, подобную этой:

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

(см. SQL * Plus FAQ для других опций и дополнительной информации.)

...