Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4 5   вперед  Ctrl      все
 Re: А можно ли неопределенное кол-во параметров? как в decode.  [new]
Elic
Member

Откуда:
Сообщений: 29979
ODBA
Кто выяснил то? Я лично еще ничего не выяснил и не увидел ни одного нормального доказательства, что decode это не функция.
Значит ты не ходил по приведённым ссылкам.

А "пурга" - это когда понятия одной предметной области пытаются притянуть за уши в другую предметную область

Чти первоисточник.
20 окт 05, 18:12    [1989770]     Ответить | Цитировать Сообщить модератору
 Re: А можно ли неопределенное кол-во параметров? как в decode.  [new]
Vadim_Maximov
Member

Откуда: Москва
Сообщений: 3571
ODBA
Кто выяснил то? Я лично еще ничего не выяснил и не увидел ни одного нормального доказательства, что decode это не функция.

SQL> select nvl(1, 1/0) from dual;

select nvl(1, 1/0) from dual

ORA-01476: divisor is equal to zero

SQL> select decode(1, 1, 1, 1/0) from dual;

DECODE(1,1,1,1/0)
-----------------
                1
Основная мысль - функция вычисляет все аргументы, которые указаны при ее вызове, выражение (оператор - пох) - нет.
20 окт 05, 18:12    [1989775]     Ответить | Цитировать Сообщить модератору
 Re: А можно ли неопределенное кол-во параметров? как в decode.  [new]
Alex_D
Member

Откуда:
Сообщений: 988
ODBA
Кто выяснил то? Я лично еще ничего не выяснил и не увидел ни одного нормального доказательства, что decode это не функция.


На мой взгляд - это с одной стороны вроде как функция (если смотреть объявление в пакете), а с другой стороны если посмотреть как она работает, то не функция (ссылку давал Elic) Вообщем Decode - функция также как dual - таблица.
20 окт 05, 18:15    [1989789]     Ответить | Цитировать Сообщить модератору
 Re: А можно ли неопределенное кол-во параметров? как в decode.  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18351
Alex_D
ODBA
Кто выяснил то? Я лично еще ничего не выяснил и не увидел ни одного нормального доказательства, что decode это не функция.


На мой взгляд - это с одной стороны вроде как функция (если смотреть объявление в пакете), а с другой стороны если посмотреть как она работает, то не функция (ссылку давал Elic) Вообщем Decode - функция также как dual - таблица.
Ви конечно будете смеяться, но dual - таки таблица! И Вы можете сломать практически любой проект, закоммитив туда пару лишних строчек (по крайней мере это верно для 9i в open режиме, сам проверял :)
20 окт 05, 18:22    [1989811]     Ответить | Цитировать Сообщить модератору
 Re: А можно ли неопределенное кол-во параметров? как в decode.  [new]
ODBA
Member

Откуда:
Сообщений: 1723
andrey_anonymous
Alex_D
ODBA
Кто выяснил то? Я лично еще ничего не выяснил и не увидел ни одного нормального доказательства, что decode это не функция.


На мой взгляд - это с одной стороны вроде как функция (если смотреть объявление в пакете), а с другой стороны если посмотреть как она работает, то не функция (ссылку давал Elic) Вообщем Decode - функция также как dual - таблица.
Ви конечно будете смеяться, но dual - таки таблица! И Вы можете сломать практически любой проект, закоммитив туда пару лишних строчек (по крайней мере это верно для 9i в open режиме, сам проверял :)



Вот это уже сильно!


Теперь с Эликом (благодаря его сцылке) согласен!
20 окт 05, 18:26    [1989825]     Ответить | Цитировать Сообщить модератору
 Re: А можно ли неопределенное кол-во параметров? как в decode.  [new]
ODBA
Member

Откуда:
Сообщений: 1723
Немногоне по теме, но давно хотел спросить Элика! Элик, Вы наизусть что ли эти книги помните?
20 окт 05, 18:28    [1989834]     Ответить | Цитировать Сообщить модератору
 Re: А можно ли неопределенное кол-во параметров? как в decode.  [new]
Terrorist
Member

Откуда: Киев
Сообщений: 45
Alex_D
ODBA
Кто выяснил то? Я лично еще ничего не выяснил и не увидел ни одного нормального доказательства, что decode это не функция.


На мой взгляд - это с одной стороны вроде как функция (если смотреть объявление в пакете), а с другой стороны если посмотреть как она работает, то не функция (ссылку давал Elic) Вообщем Decode - функция также как dual - таблица.

А dual таблица ... дропнуть можно и не будет у вас работать
select 1 from dual ...
20 окт 05, 18:30    [1989843]     Ответить | Цитировать Сообщить модератору
 Re: А можно ли неопределенное кол-во параметров? как в decode.  [new]
Elic
Member

Откуда:
Сообщений: 29979
Alex_D
Вообщем Decode - функция.
В угоду Oracle-у, который ошибочно по внешним признакам описал decode в разделе функций, допускаю определение
"DECODE - это magic-SQL-функция, которая по сути своей есть выражение".
А в PL/SQL-е нет decode ни в каком виде Картинка с другого сайта.
20 окт 05, 18:32    [1989846]     Ответить | Цитировать Сообщить модератору
 Re: А можно ли неопределенное кол-во параметров? как в decode.  [new]
db-man
Guest
ODBA
Я лично еще ничего не выяснил и не увидел ни одного нормального доказательства, что decode это не функция.

Это функция.

SQL> declare
  2    n number;
  3  begin
  4    n := decode(1, 2, 3);
  5  end;
  6  /
  n := decode(1, 2, 3);
       *
ERROR at line 4:
ORA-06550: line 4, column 8:
PLS-00204: function or pseudo-column 'DECODE' may be used inside a SQL statement only
ORA-06550: line 4, column 3:
PL/SQL: Statement ignored
Но это не псевдостолбец => функция :)
20 окт 05, 18:36    [1989862]     Ответить | Цитировать Сообщить модератору
 Re: А можно ли неопределенное кол-во параметров? как в decode.  [new]
AI
Member

Откуда: Москва
Сообщений: 2817
Terrorist
Alex_D
ODBA
Кто выяснил то? Я лично еще ничего не выяснил и не увидел ни одного нормального доказательства, что decode это не функция.


На мой взгляд - это с одной стороны вроде как функция (если смотреть объявление в пакете), а с другой стороны если посмотреть как она работает, то не функция (ссылку давал Elic) Вообщем Decode - функция также как dual - таблица.

А dual таблица ... дропнуть можно и не будет у вас работать
select 1 from dual ...


После drop table dual еще много чего не будет работать...
20 окт 05, 18:38    [1989869]     Ответить | Цитировать Сообщить модератору
 Re: А можно ли неопределенное кол-во параметров? как в decode.  [new]
ODBA
Member

Откуда:
Сообщений: 1723
Все парни, вроде начинает приходить глубокая мысль в голову

Функция вызывается при вычислении выражений.

Соответственно вот это: DECODE (0, 0, 1, to_number('бла-бла-бла')) не функция, а выражение и соответственно чтобы вычислить это выражение вызывается НЕКАЯ функция, которую мы, я так понимаю, не видим визуально. И вот в нее передаются уже аргументы. Функция выполняет необходимые действия и возвращает результат. Если этот результат false, то эта функция вызывается еще раз и еще раз... до тех пор пока не возвратит, так скажем "ИНАЧЕ". Соответственно в нашем примере она удовольствуется только одним вызовом с 0, 0.

Ну как? Нормалек или пурга?
20 окт 05, 18:48    [1989902]     Ответить | Цитировать Сообщить модератору
 Re: А можно ли неопределенное кол-во параметров? как в decode.  [new]
qazaq
Member

Откуда:
Сообщений: 418
ВСТРОЕННАЯ Ф-ИЯ - ОДНОЗНАЧНО
20 окт 05, 19:00    [1989950]     Ответить | Цитировать Сообщить модератору
 Re: А можно ли неопределенное кол-во параметров? как в decode.  [new]
ODBA
Member

Откуда:
Сообщений: 1723
ODBA
Все парни, вроде начинает приходить глубокая мысль в голову

Функция вызывается при вычислении выражений.

Соответственно вот это: DECODE (0, 0, 1, to_number('бла-бла-бла')) не функция, а выражение и соответственно чтобы вычислить это выражение вызывается НЕКАЯ функция, которую мы, я так понимаю, не видим визуально. И вот в нее передаются уже аргументы. Функция выполняет необходимые действия и возвращает результат. Если этот результат false, то эта функция вызывается еще раз и еще раз... до тех пор пока не возвратит, так скажем "ИНАЧЕ". Соответственно в нашем примере она удовольствуется только одним вызовом с 0, 0.

Ну как? Нормалек или пурга?



Только вот меня самого смущает цифра 255.... ёлы зеленые....
20 окт 05, 19:05    [1989958]     Ответить | Цитировать Сообщить модератору
 Re: А можно ли неопределенное кол-во параметров? как в decode.  [new]
ODBA
Member

Откуда:
Сообщений: 1723
Хотя... с другой стороны DECODE не соответствует стандарту.. и о ней можно забыть, как о страшном сне, если по большому счету...
20 окт 05, 19:11    [1989968]     Ответить | Цитировать Сообщить модератору
 Re: А можно ли неопределенное кол-во параметров? как в decode.  [new]
qazaq
Member

Откуда:
Сообщений: 418
ЧИТАЕМ ДРУЖНО
PL/SQL User's Guide and Reference
Release 2 (9.2)
Part Number A96624-01

Fundamentals of PL/SQL
Built-In Functions

DECODE function
treatment of nulls, 2-34
:-\
20 окт 05, 19:16    [1989978]     Ответить | Цитировать Сообщить модератору
 Re: А можно ли неопределенное кол-во параметров? как в decode.  [new]
qazaq
Member

Откуда:
Сообщений: 418
КТО-НИБУДЬ МОЖЕТ ЕЩЕ ЧТО-ТО СООБЩИТЬ ПО СУЩЕСТВУ?
20 окт 05, 19:18    [1989981]     Ответить | Цитировать Сообщить модератору
 Re: А можно ли неопределенное кол-во параметров? как в decode.  [new]
qazaq
Member

Откуда:
Сообщений: 418
qazaq
ЧИТАЕМ ДРУЖНО
PL/SQL User's Guide and Reference
Release 2 (9.2)
Part Number A96624-01

Fundamentals of PL/SQL
Built-In Functions

DECODE function
treatment of nulls, 2-34
:-\

хочу сказать - читаем в хелпе эту тему :)
20 окт 05, 19:23    [1989993]     Ответить | Цитировать Сообщить модератору
 Re: А можно ли неопределенное кол-во параметров? как в decode.  [new]
juks@gala.net
Member

Откуда: Киев
Сообщений: 4212
qazaq
qazaq
ЧИТАЕМ ДРУЖНО
PL/SQL User's Guide and Reference
Release 2 (9.2)
Part Number A96624-01

Fundamentals of PL/SQL
Built-In Functions

DECODE function
treatment of nulls, 2-34
:-\

хочу сказать - читаем в хелпе эту тему :)

Мало ли, что там написано
20 окт 05, 19:42    [1990031]     Ответить | Цитировать Сообщить модератору
 Re: А можно ли неопределенное кол-во параметров? как в decode.  [new]
Elic
Member

Откуда:
Сообщений: 29979
ODBA
Элик, Вы наизусть что ли эти книги помните?
За время получения специальности инжинер-системотехник главное, чему Нас () научили, - это знаниям, как вспоминать, получать и т.п. знания. Т.е. достаточно знать, где взять index.pdf, и после прочтения определённого количества оглавлений метазнания у Нас () в голове :)

______________________________________________________________________


juks@gala.net
qazaq
ЧИТАЕМ ДРУЖНО
PL/SQL User's Guide and Reference, Release 2 (9.2)
Built-In Functions
Мало ли, что там написано
А почему нас не всегда интересует то, что написано, достаточно подробно обсосано в приведённых мной ссылках.
qazaq
КТО-НИБУДЬ МОЖЕТ ЕЩЕ ЧТО-ТО СООБЩИТЬ ПО СУЩЕСТВУ?
"Если на клетке с буйволом написано "Слон" - не верь глазам своим". (с) Козьма Прутков
20 окт 05, 20:34    [1990112]     Ответить | Цитировать Сообщить модератору
 Re: А можно ли неопределенное кол-во параметров? как в decode.  [new]
juks@gala.net
Member

Откуда: Киев
Сообщений: 4212
Elic
juks@gala.net
qazaq
ЧИТАЕМ ДРУЖНО
PL/SQL User's Guide and Reference, Release 2 (9.2)
Built-In Functions
Мало ли, что там написано
А почему нас не всегда интересует то, что написано, достаточно подробно обсосано в приведённых мной ссылках.

Если, это касалось меня, то как раз интересует,то что Вами "обсосано".
20 окт 05, 20:47    [1990130]     Ответить | Цитировать Сообщить модератору
 Re: А можно ли неопределенное кол-во параметров? как в decode.  [new]
Elic
Member

Откуда:
Сообщений: 29979
juks@gala.net
Elic
juks@gala.net
Мало ли, что там написано
А почему нас не всегда интересует то, что написано, достаточно подробно обсосано в приведённых мной ссылках.
Если, это касалось меня,
Нет. Я как бы продолжил мысль (по крайней мере мне так показалось).
juks@gala.net
то как раз интересует,то что Вами "обсосано".
Если отсюда по ссылкам вглубь чего-то (в частности, это) неясно, спрашивай конкретней - попробую разъяснить.
20 окт 05, 21:08    [1990162]     Ответить | Цитировать Сообщить модератору
 Re: А можно ли неопределенное кол-во параметров? как в decode.  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18351
qazaq
КТО-НИБУДЬ МОЖЕТ ЕЩЕ ЧТО-ТО СООБЩИТЬ ПО СУЩЕСТВУ?
create type params as table of number
/
Type created

create or replace function ane_greatest(vallist IN params) return number is
  greatest number;
  i number;
begin
  if vallist.count > 0 then
    i := vallist.first;
    loop
      case
        when greatest is null and vallist(i) is not null then
          greatest := vallist(i);
        when vallist(i) is null then null;
        else
          if greatest < vallist(i) then
            greatest := vallist(i);
          end if;
      end case;
    exit when i = vallist.last;
      i := vallist.next(i);
    end loop;
  end if;
  return greatest;
end;
/
Function created

exec dbms_output.put_line(ane_greatest(params(1,2,3)));

3

PL/SQL procedure successfully completed

exec dbms_output.put_line(ane_greatest(params(5,3,0,-23,8086,null,758)));

8086

PL/SQL procedure successfully completed

exec dbms_output.put_line(ane_greatest(params(5,100,null,1,2,3,4,5,6,7,8,9,0)));

100

PL/SQL procedure successfully completed

exec dbms_output.put_line(ane_greatest(ane_test_t(null,800,900,121)));

900

PL/SQL procedure successfully completed
20 окт 05, 21:18    [1990179]     Ответить | Цитировать Сообщить модератору
 Re: А можно ли неопределенное кол-во параметров? как в decode.  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 10045
2 andrey_anonymous:

Using table type does not make it work as DECODE:

1. Decode can take parameters of various types while using table type limits you to a single type

2. DECODE calculates searchN, resultN and default expressions only when it reaches them. Function arguments are always calculated before function is called.

SY.
20 окт 05, 22:13    [1990260]     Ответить | Цитировать Сообщить модератору
 Re: А можно ли неопределенное кол-во параметров? как в decode.  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18351
SY
2 andrey_anonymous:
Using table type does not make it work as DECODE:
SY.
SY, вернитесь к началу топика:
Terrorist

Хочу создать свою функцию, в которую параметры передаються как в decode. Такое можно сделать?
Купите селедку и морочьте ей голову.
Человеку всего-навсего надо синтаксис похожий, желательно малой кровью... :)
20 окт 05, 22:22    [1990284]     Ответить | Цитировать Сообщить модератору
 Re: А можно ли неопределенное кол-во параметров? как в decode.  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18484
До кучи, по поводу того, что sys.standard.decode просто затычка, а не функция (в отличии от NVL, например)
tst> select sys.standard.nvl(1,2) from dual;

SYS.STANDARD.NVL(1,2)
---------------------
                    1

1 row selected.

tst> select sys.standard.decode(0,0,1) from dual;
select sys.standard.decode(0,0,1) from dual
           *
ERROR at line 1:
ORA-06553: PLS-707: unsupported construct or internal error [2603]

21 окт 05, 06:51    [1990572]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4 5   вперед  Ctrl      все
Все форумы / Oracle Ответить