Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ref cursor тестирование / 6 сообщений из 6, страница 1 из 1
08.09.2016, 10:22:38
    #39305663
Tester666
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ref cursor тестирование
Доброго времени суток!
Вопрос такой - есть ряд процедур, которые возвращают набор данных через ref cursor.
Какими средствами лучше тестировать данные прцедуры?
Меня интересует среднее время выполнения для начала.
Если запускать процедуру через девелопер в тестовом окне я могу увидеть время выполнения самой процедуры. Отдельно при нажатии на кнопку <Cursor> я могу видеть датасет, там уже время получения 1 страницы датасета. При выборе всех строк получаю еще 1 время.
А хотелось бы получить общее время выполнения процедуры и выдачи всех ее данных.
Пробовал через cmd:
Код: plsql
1.
2.
3.
4.
sql>variable cr refcursor
sql>begin proc(:cr) end;
/
sql>print cr


результат меня не устроил.
Может быть есть еще какие-то способы.
...
Рейтинг: 0 / 0
08.09.2016, 11:54:16
    #39305738
Avotge
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ref cursor тестирование
Tester666, сделать процедуру, которая вызывает твою ф-цию с курсором и профетчить в ней курсор и смотреть время выполнения уже самой этой процедуры? ) Или, если основное время занимает сам фетч курсора, то разбираться сразу с самим запросом, а не функцией.
...
Рейтинг: 0 / 0
08.09.2016, 14:21:56
    #39305894
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ref cursor тестирование
Tester666Пробовал через cmd:
Код: plsql
1.
2.
3.
4.
sql>variable cr refcursor
sql>begin proc(:cr) end;
/
sql>print cr


результат меня не устроил.
Может быть есть еще какие-то способы.

set timi on не поможет?
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
SQL> var c REFCURSOR
SQL> exec open :c for select * from dual;

PL/SQL procedure successfully completed.

Elapsed: 00:00:00.04
SQL> print c

D
-
X

Elapsed: 00:00:00.01
SQL>



.....
stax
...
Рейтинг: 0 / 0
08.09.2016, 19:33:28
    #39306139
--Eugene--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ref cursor тестирование
stax..set timi on не поможет?а print выфетчит сразу весь курсор?
даже если и весь, сколько же лага времени уйдет на консольный вывод? при длинных строках - очень даже немало.
...
Рейтинг: 0 / 0
08.09.2016, 19:53:43
    #39306151
--Eugene--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ref cursor тестирование
Tester666Может быть есть еще какие-то способы.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
SANDBOX@ee>;create or replace procedure p(c out sys_refcursor) as begin open c for select * from dual connect by level < 1000000; end;
  2  /

Procedure created.

Elapsed: 00:00:00.02
SANDBOX@ee>;declare
  2      t timestamp := systimestamp;
  3      c sys_refcursor;
  4      n number;
  5  begin
  6      p(c);
  7      n := dbms_sql.to_cursor_number(c);
  8      while dbms_sql.fetch_rows(n) != 0 loop null; end loop;
  9      dbms_output.put_line('time spent: ' || (systimestamp - t));
 10  end;
 11  /
time spent: +000000000 00:00:05.111000000

PL/SQL procedure successfully completed.

Elapsed: 00:00:05.12
...
Рейтинг: 0 / 0
09.09.2016, 13:24:31
    #39306571
Tester666
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ref cursor тестирование
Всем спасибо, буду с запросом разбираться отдельно.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ref cursor тестирование / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]