?

Log in

No account? Create an account

Пт, 23 мар, 2007, 10:21
Омммм…

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

function XXX(
  ...
  argument1   IN varchar2 default CHR(0),
  argument2   IN varchar2 default CHR(0),
  argument3   IN varchar2 default CHR(0),
  ...
  ...
  ...
  argument99  IN varchar2 default CHR(0),
  argument100 IN varchar2 default CHR(0)
)
return number is
  ...
begin
  ...
  if (argument1 = CHR(0)) then goto end_args; end if;
  nargs := 1;
  argtxt := argtxt||argument1;
  if (argument2 = CHR(0)) then goto end_args; end if;
  nargs := 2;
  argtxt := argtxt|| ', '||argument2;
  if (argument3 = CHR(0)) then goto end_args; end if;
  nargs := 3;
  argtxt := argtxt|| ', '||argument3;
  ...
  ...
  ...
  if (argument99 = CHR(0)) then goto end_args; end if;
  nargs := 99;
  argtxt := argtxt||', '||argument99;
  if (argument100 = CHR(0)) then goto end_args; end if;
  nargs := 100;
  argtxt := argtxt||', '||argument100;
  <<end_args>>
  ...
end;

Ну а с другой стороны, чего ждать от исходника, авторы которого Ram Bhoopalam и H Pelimuhandiram?..

Пт, 23 мар, 2007 10:57 (UTC)
slone: варчар

хлюп.. ностальгия-то какая.. эхъ.. где мой шюпп времён первого курса? :))

Пт, 23 мар, 2007 11:02 (UTC)
egorius

А мне вот живо вспомнился Кирпич на клавиатуре, генерирующий тысячу BEEPов :)

Пт, 23 мар, 2007 18:37 (UTC)
c_piper

goto /*показательно падает в обморок*/

а эти бхупалам и пелимухандирам они на этот код видимо медитировали.
на каждом цикле медитации они добавляли переменную... и проверку с goto в-сами-знаете-куда

Пт, 23 мар, 2007 22:00 (UTC)
egorius

Есть подозрение, что они этот код курили.
Кстати, для goto в PL/SQL есть-таки одно применение: в языке почему-то отсутствует команда выхода из цикла (типа break), так вот она успешно заменяется_на. Но тут… Мда.

Сб, 24 мар, 2007 19:10 (UTC)
hardsign

egorius ошибЪся -- exit как раз и есть break; а вот аналога continue в PL/SQL действительно нет

Вс, 25 мар, 2007 18:03 (UTC)
egorius

Ъ прав — я, конечно, имел в виду continue.