Oracle profiler без стороннего программного обеспечения - PullRequest
0 голосов
/ 11 апреля 2019

Я пытаюсь создать что-то вроде профилировщика T-SQL с запросами без какого-либо стороннего программного обеспечения.

Итак, во-первых, у меня есть код для выполнения текущих выполняемых запросов:

select x.sid
,sql_text
from   v$sqlarea sqlarea
,v$session x
where  x.sql_hash_value = sqlarea.hash_value
and    x.sql_address    = sqlarea.address
and    x.username = 'USERNAME';

Теперь я нахожу две проблемы:

Когда я помещаю этот код в цикл while, я получаю сообщение об ошибке:

 DECLARE
  x NUMBER := 0;
BEGIN
  LOOP
         select x.sid
         ,sql_text
         from   v$sqlarea sqlarea
        ,v$session x
         where  x.sql_hash_value = sqlarea.hash_value
         and    x.sql_address    = sqlarea.address
         and    x.username = 'MAGICAPP';
    EXIT WHEN x > 1;
  END LOOP;
END;

Сообщение об ошибке - ORA-06550: строка 5, столбец 10: PLS-00428: предложение INTO ожидается в этом операторе SELECT 06550. 00000 - «строка% s, столбец% s: \ n% s» * Причина: обычно ошибка компиляции PL / SQL. * Действие:

Второй вызов может быть:

  • Даже если этот код работает, он будет обновлять старые данные новыми данными с помощью оператора SELECT. Можно ли добавить новые данные в старые данные с помощью инструкции SELECT, если новые данные не найдены в старых данных?

Как это должно работать?

После выполнения этот скрипт должен продолжать работать, пока пользователь не отменит его, а затем распечатать все найденные запросы.

1 Ответ

1 голос
/ 11 апреля 2019

В частности, для ошибки требуется INTO для выбора значений переменных INTO, например:

 DECLARE
  x NUMBER := 0;
  txt VARCHAR2(4000);
BEGIN
  LOOP
         select x.sid,sql_text
         INTO   x, txt
         from   v$sqlarea sqlarea
        ,v$session x
         where  x.sql_hash_value = sqlarea.hash_value
         and    x.sql_address    = sqlarea.address
         and    x.username = 'MAGICAPP';
    EXIT WHEN x > 1;
  END LOOP;
END;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...