Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Default значения параметров процедур - где ?  [new]
Hibiscus
Member

Откуда: Москва
Сообщений: 66
Не могу найти где Оракля хранит эти значения.
В user_arguments нету - там инфа из sys.argument$ где два поля default# и default$.
default# - индикатор есть ли значение по умолчанию у параметра процедуры или нет. А вот в
default$ вроде должно было хранится само знание. Но его там нет. Null везде.
29 янв 07, 14:19    [3707532]     Ответить | Цитировать Сообщить модератору
 Re: Default значения параметров процедур - где ?  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
Hibiscus
Не могу найти где Оракля хранит эти значения.
В user_arguments нету - там инфа из sys.argument$ где два поля default# и default$.
default# - индикатор есть ли значение по умолчанию у параметра процедуры или нет. А вот в
default$ вроде должно было хранится само знание. Но его там нет. Null везде.

Нет, никогда не было, и нет признаков, что скоро будет. В документации - шутка..
29 янв 07, 14:22    [3707549]     Ответить | Цитировать Сообщить модератору
 Re: Default значения параметров процедур - где ?  [new]
Hibiscus
Member

Откуда: Москва
Сообщений: 66
Хмм. А когда вызываешь процедуру не с полным списком параметров, т.е. не указываешь дефалты - откудато оракля их берет же. Не парсит же она сама all_source )
29 янв 07, 14:24    [3707563]     Ответить | Цитировать Сообщить модератору
 Re: Default значения параметров процедур - где ?  [new]
Elic
Member

Откуда:
Сообщений: 29991
STFF Информация о пакетах
29 янв 07, 14:24    [3707567]     Ответить | Цитировать Сообщить модератору
 Re: Default значения параметров процедур - где ?  [new]
Hibiscus
Member

Откуда: Москва
Сообщений: 66
Полистал. Получается что только трассировкой можно их вытащить ?
29 янв 07, 14:45    [3707736]     Ответить | Цитировать Сообщить модератору
 Re: Default значения параметров процедур - где ?  [new]
Elic
Member

Откуда:
Сообщений: 29991
Hibiscus
Полистал. Получается что только трассировкой можно их вытащить ?
И трассировкой нельзя. С чего ты взял?
29 янв 07, 15:01    [3707857]     Ответить | Цитировать Сообщить модератору
 Re: Default значения параметров процедур - где ?  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
Hibiscus
Полистал. Получается что только трассировкой можно их вытащить ?
М... А где Вы прочитали, что трассой их можно вытащить?
29 янв 07, 15:02    [3707872]     Ответить | Цитировать Сообщить модератору
 Re: Default значения параметров процедур - где ?  [new]
angry cat
Member

Откуда:
Сообщений: 5
КОМПИЛИМ
CREATE OR REPLACE PROCEDURE P_XXX (
SSS1 IN VARCHAR2 DEFAULT 'BLA-BLA-BLA',
SSS2 IN VARCHAR2 DEFAULT 'BLA-BLA-BLA',
SSS3 IN VARCHAR2 DEFAULT 'BLI-BLI-BLI',
NNN0 IN NUMBER,
NNN1 IN NUMBER DEFAULT 12345

)
IS
BEGIN
NULL;
END;

СМОТРИМ
SELECT piece
FROM SYS.IDL_CHAR$ C
WHERE C.OBJ#=:xxx

"P_XXX"SSS1"VARCHAR2"BLA-BLA-BLA"SSS2"SSS3"BLI-BLI-BLI"NNN0"NUMBER"NNN1"12345"11""
"PKG INIT"P_XXX"SSS1"SSS2"SSS3"NNN0"NNN1""
29 янв 07, 15:29    [3708133]     Ответить | Цитировать Сообщить модератору
 Re: Default значения параметров процедур - где ?  [new]
Elic
Member

Откуда:
Сообщений: 29991
angry cat
СМОТРИМ
"P_XXX"SSS1"VARCHAR2"BLA-BLA-BLA"SSS2"SSS3"BLI-BLI-BLI"NNN0"NUMBER"NNN1"12345"11""
"PKG INIT"P_XXX"SSS1"SSS2"SSS3"NNN0"NNN1""
Это всего лишь уникальный список несинтаксических лексем. Само по себе это бессмысленная информация :)
29 янв 07, 15:46    [3708264]     Ответить | Цитировать Сообщить модератору
 Re: Default значения параметров процедур - где ?  [new]
Hibiscus
Member

Откуда: Москва
Сообщений: 66
Почему бессмысленная ?
Логически по моему записано.
Идет название процедуры, далее тип параметра, далее дефалтовое значение (если есть), далее название параметра (может быть несколько, если дефалтовое одно для них и совпадает тип).

И так по каждому типу параметров.

Мне подходит.
29 янв 07, 16:02    [3708429]     Ответить | Цитировать Сообщить модератору
 Re: Default значения параметров процедур - где ?  [new]
Hibiscus
Member

Откуда: Москва
Сообщений: 66
Ошибся - после название процедуры идут сначала название параметра, тип, потом дефалт, потом еще названия параметров у которых такой же дефалт. Но все равно логика структуры присутствует.
29 янв 07, 16:04    [3708452]     Ответить | Цитировать Сообщить модератору
 Re: Default значения параметров процедур - где ?  [new]
Elic
Member

Откуда:
Сообщений: 29991
Hibiscus
Но все равно логика структуры присутствует.
Ну-ну
create procedure "varchar2"("VARCHAR2" VARCHAR2 := 'VARCHAR2')
is
begin
  null;
end;
/
29 янв 07, 16:36    [3708749]     Ответить | Цитировать Сообщить модератору
 Re: Default значения параметров процедур - где ?  [new]
Hibiscus
Member

Откуда: Москва
Сообщений: 66
ппц )
Ну подобное извращение в нормальной базе не встречается ) Или встречается крайне редко ) Для работы вполне можно пользоваться.
29 янв 07, 16:52    [3708910]     Ответить | Цитировать Сообщить модератору
 Re: Default значения параметров процедур - где ?  [new]
Elic
Member

Откуда:
Сообщений: 29991
Hibiscus
Для работы вполне можно пользоваться.
Всё еще не понял тщетности потуг?
create procedure tmpp1(a boolean := true, b boolean := false, c boolean := true, d boolean := false)
is
begin null;end;
/
create procedure tmpp2(a boolean := true, b boolean := false, c boolean := false, d boolean := true)
is
begin null; end;
/

select piece from sys.idl_char$ c where c.obj# in
  (select object_id from user_objects where object_name like 'TMPP_');

PIECE
---------------------------------------
"TMPP1"A"BOOLEAN"TRUE"B"FALSE"C"D""
"TMPP2"A"BOOLEAN"TRUE"B"FALSE"C"D""
29 янв 07, 16:59    [3708974]     Ответить | Цитировать Сообщить модератору
 Re: Default значения параметров процедур - где ?  [new]
mix1
Guest
Hibiscus
ппц )
Ну подобное извращение в нормальной базе не встречается ) Или встречается крайне редко ) Для работы вполне можно пользоваться.


Почему тогда не из user_source типа:
select text from user_source where name='имя проц-ры' where line=1
29 янв 07, 17:02    [3709006]     Ответить | Цитировать Сообщить модератору
 Re: Default значения параметров процедур - где ?  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
Имхо, есть один сценарий, который может автоматизировать извлечение
дефолтов из валидного хранимого кода (не на продуктиве, конечно):
1) Скомпилить програм юнит в дебагмоде
2) поставить брекпоинты везде-где-только-встанут
3) выполнить вызов нужной процедуры, естественно, манкировав искомый параметр
4) в первом же брекпоинте снять значение ну и выйти нафик..
30 янв 07, 17:52    [3715371]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить