Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Новый топик    Ответить
 новый пользовательский тип данных и переопределение функций для него  [new]
iNikolas
Member

Откуда:
Сообщений: 5
Помогите плз...
задача вот какая:
Есть новый тип данных на основе типа DECIMAL. для него надо переопределить функции столбцов и математические операции...
Скажите, как это сделать?
и посоветуйте литературу по этому делу...
Заранее спасибо!
10 май 06, 18:13    [2649397]     Ответить | Цитировать Сообщить модератору
 Re: новый пользовательский тип данных и переопределение функций для него  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4946
Добрый день.

--
create distinct type mydec as decimal(10,2) with comparisons;
CREATE FUNCTION "-" (mydec, mydec) RETURNS mydec SOURCE "-" (DECIMAL, DECIMAL);
CREATE FUNCTION MAX (mydec) RETURNS mydec SOURCE SYSIBM.MAX (DECIMAL);
CREATE FUNCTION AVG (mydec) RETURNS mydec SOURCE SYSIBM.AVG (DECIMAL);
--

Описание есть в SQL Reference Volume 1, 2

С уважением,
Марк.
12 май 06, 14:56    [2657683]     Ответить | Цитировать Сообщить модератору
 Re: новый пользовательский тип данных и переопределение функций для него  [new]
iNikolas
Member

Откуда:
Сообщений: 5
Спасибо за ответ, но проблема в том, что я не могу передать в функцию параметры нового типа, функция не строится и происходит откат...
Если же особый тип заменить на встроенный, то функция успешно создаетя...
в чем может быть дело?
14 май 06, 16:55    [2661718]     Ответить | Цитировать Сообщить модератору
 Re: новый пользовательский тип данных и переопределение функций для него  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4946
Не совсем понял.
Что значит "не строится и происходит откат"?
Примеры, которые я привел, работают в v8.2.1

Может, так (явное преобразование типов использовать):

select avg(mydec(i)) from (values (decimal(5.4, 10, 2)), (decimal(3.7, 10, 2))) t(i);
15 май 06, 09:39    [2662813]     Ответить | Цитировать Сообщить модератору
 Re: новый пользовательский тип данных и переопределение функций для него  [new]
iNikolas
Member

Откуда:
Сообщений: 5
Вот что пишет в окне вывода центр разработки при попытке построитьфункцию:

Построение запущено.
Построение завершилось неудачно.
Откат успешно выполнен.

Это происходит всегда при передачи переменных нового типа, как параметров, даже если тело функции пустое...
15 май 06, 10:30    [2663053]     Ответить | Цитировать Сообщить модератору
 Re: новый пользовательский тип данных и переопределение функций для него  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4946
Что, из этого "центра разработок" команды, которые я написал не идут?
а из db2cmd?
Если и оттуда не пойдут, тогда какая у вас версия db2 вообще?
15 май 06, 10:39    [2663127]     Ответить | Цитировать Сообщить модератору
 Re: новый пользовательский тип данных и переопределение функций для него  [new]
iNikolas
Member

Откуда:
Сообщений: 5
ESE 8.1.7.445

в db2cmd тоже самое...

Если создавать функцию или процедуру через мастера их создания, среди типов входных переменных нет ни одного созданного типа, только встроенные, хотя в самой базе есть таблицы, построенные на этих типах...
Может особые типы надо какимто образом импортировать в центр разработки из базы данных?
15 май 06, 23:16    [2667045]     Ответить | Цитировать Сообщить модератору
 Re: новый пользовательский тип данных и переопределение функций для него  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4946
Ну, мне остается только предложить остальным участникам форума поробовать запустить выше приведенные команды на своих базах и сообщить результаты.
Возможно, дело в фиксе, который надо поставить, и уж тогда...
16 май 06, 09:34    [2667566]     Ответить | Цитировать Сообщить модератору
 новый пользовательский тип данных и переопределение функций для него  [new]
iNikolas
Member

Откуда:
Сообщений: 5
Все равно спасибо за помощь, буду разбираться дальше...
16 май 06, 11:02    [2668071]     Ответить | Цитировать Сообщить модератору
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Ответить