Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
Администрирование Oracle Database:
- Установка и настройка базы данных
- Обновление, применение патчей
- Оптимизация, настройка производительности
- Обучение, подготовка персонала, оптимизация
  • Страница:
  • 1

ТЕМА: Oracle: Как узнать с какими параметрами была запущена процедура

Oracle: Как узнать с какими параметрами была запущена процедура 29 авг 2011 04:16 #3470

  • Klond
  • Klond аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 50
  • Спасибо получено: 0
Ситуация следующая :

create or replace procedure P1(n1 in number, n2 in number) is
begin
............
end;

В определенный момент юзер ее запускает.

Необходимо опрделить когда процедура рабтает с какими значениями параметров она была запущена.

Сесссия юзера известна

Помоги плиз... либо скажите, что вопрос детский буду копать сам :)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Oracle: Как узнать с какими параметрами была запущена процедура 29 авг 2011 04:16 #3471

Вопрос, действительно, детский. Для каждой сессии выделяется свое собственное пространство памяти - PGA, в которое не может заглянуть ни одна другая сессия. И все значения переменных, фактических параметров содержатся именно в PGA. Работает простая защита данных в многопользовательском режиме.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Oracle: Как узнать с какими параметрами была запущена процедура 29 авг 2011 04:17 #3472

Формально можно посмотреть вызов процедур, функций в


select * from v$sql;


Например там можно увидеть:
BEGIN DBMS_APPLICATION_INFO.SET_MODULE(:1,NULL); END;

Если вызов идёт через bind - то там будут :1 :2 итд.
Если непосредственно, то можно увидеть.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Oracle: Как узнать с какими параметрами была запущена процедура 29 авг 2011 04:18 #3473

Пример:
SQLWKS> declare

     2>  v_str VARCHAR2(15);

     3> begin

     4> v_str:=CYR2LAT('СОФТБИЛДЕР');

     5> end;

     6> 

Предложение обработано.

SQLWKS> select sql_text from v$sql where sql_text like '%CYR2LAT(''СОФТБИЛДЕР'')%'

     2> 

SQL_TEXT                                                                        

--------------------------------------------------------------------------------


declare  v_str VARCHAR2(15); begin v_str:=CYR2LAT('СОФТБИЛДЕР'); end;           

Выбрана 1 строка.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Meverik.

Re: Oracle: Как узнать с какими параметрами была запущена процедура 29 авг 2011 04:19 #3474

  • Klond
  • Klond аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 50
  • Спасибо получено: 0
А если :


declare
v_str VARCHAR2(15);
sQQQ VARCHAR2(15);

begin
sQQQ := 'Проба';
v_str:=CYR2LAT(sQQQ);
end;

Тогда как быть ?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Oracle: Как узнать с какими параметрами была запущена процедура 29 авг 2011 04:19 #3475

SQLWKS> declare 

     2> v_str VARCHAR2(15); 

     3> sQQQ VARCHAR2(15); 

     4> 

     5> begin 

     6> sQQQ := 'Проба'; 

     7> v_str:=CYR2LAT(sQQQ); 

     8> end; 

     9> 

    10> 

Предложение обработано.

SQLWKS> select sql_text from v$sql where sql_text like '%Проба%'

     2> 

SQL_TEXT                                                                        

--------------------------------------------------------------------------------


declare  v_str VARCHAR2(15);  sQQQ VARCHAR2(15);   begin  sQQQ := 'Проба';  v_st

select sql_text from v$sql where sql_text like '%Проба%'                        

Выбрано 2 строк.

В этом смысле всё нормально.
Я уже сказал, проблема будет только в том случае, если процедура вызывалась с привязкой переменных.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Страница:
  • 1