Как оличить default от параметра

Bucher
Дата: 04.03.2011 14:46:54
Есть процедура

create or replace procedure proc1(id number:=1)
is
begin
-- текст процедуры
end proc1;

Кто-то вызывает эту процедуру

так

begin
proc1(1);
end;

или так

begin
proc1;
end;

Как внутри процедуры узнать откуда пиришло значение id=1, из default или из параметра при вызове процедуры?
-2-
Дата: 04.03.2011 14:53:28
create or replace procedure proc1(id number:=1/0) 
Если пришло в процедуру, то из вызова.
AlexFF__|
Дата: 04.03.2011 14:55:22
Bucher,
никак
SysOper
Дата: 04.03.2011 14:56:25
Bucher,

Какая-то кривая логика.
Разве нельзя сразу написать

create or replace procedure proc1(id number defaul null) 
is
v_id number := nvl(id, 1);
begin
-- текст процедуры
end proc1;
Bucher
Дата: 04.03.2011 15:09:45
SysOper
Bucher,

Какая-то кривая логика.
Разве нельзя сразу написать

create or replace procedure proc1(id number defaul null) 
is
v_id number := nvl(id, 1);
begin
-- текст процедуры
end proc1;


Процедуру писал не я, досталась как данность, изменение вызова очень проблематично.
Но в коде можно анализировать параметр через dsql.
AlexFF__|
Дата: 04.03.2011 15:11:17
SysOper
Bucher,

Какая-то кривая логика.
Разве нельзя сразу написать

create or replace procedure proc1(id number defaul null) 
is
v_id number := nvl(id, 1);
begin
-- текст процедуры
end proc1;

И как в этом случае отследить,
откуда пиришло значение 
nikonian
Дата: 04.03.2011 15:17:45
Если есть зависимость логики процедуры не только от значения параметра, но и от способа его передачи - нужен второй параметр или же отслеживать глобальное состояние (глоб. переменная, контекст и т.п.).
orawish
Дата: 04.03.2011 15:35:06
а вот интересно - как те, кому нужен ответ на сабж. определят своё хотелово
в ситуации, когда в вызове параметр есть, но это (оракловый резервед ворд) default
-2-
Дата: 04.03.2011 15:49:51
procedure proc1(id number) is 
...

procedure proc1 is 
   default_ number := 1
begin
   flag_default := true;
   proc1(default_);
   flag_default := false;
exception
   flag_default := false;
   raise;
end;
безnull
Дата: 04.03.2011 16:10:41
Bucher
SysOper
Bucher,

Какая-то кривая логика.
Разве нельзя сразу написать

create or replace procedure proc1(id number defaul null) 
is
v_id number := nvl(id, 1);
begin
-- текст процедуры
end proc1;


Процедуру писал не я, досталась как данность, изменение вызова очень проблематично.
Но в коде можно анализировать параметр через dsql.


Чем вам вариант SysOper не нравится?
Если proc1() - то значение будет null,
если proc1(1), то 1.
Куда ещё проще.