Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Пользовательский тип данных в DB2 / 5 сообщений из 5, страница 1 из 1
21.12.2009, 14:23
    #36377578
Пользовательский тип данных в DB2
Добрый день,

есть необходимость создать свой тип данных который бы потом можно было
использовать в операторе SELECT как и local type db2. Например

CREATE DISTINCT TYPE UT_UUID AS CHAR(6) WITH COMPARISONS

CREATE TABLE temp(
uuid UT_UUID,
name CHAR(10))

А теперь, что-то типа SELECT * FROM temp WHERE uuid = 'abcdef'.
получаю:
SQL0401N Операнды, заданные для операции "=", имеют несовместимые типы данных.

Возможно ли это ? И если да то как создать COMPARISON функцию для оператора "=",
или вообщем как это реализовать.

Оператор типа SELECT * FROM temp WHERE CHAR(uuid) = 'abcdef'
работает нормально но в силу специфики клиентской програмы сложно реализуем.
...
Рейтинг: 0 / 0
21.12.2009, 14:44
    #36377616
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользовательский тип данных в DB2
Александр Ведерников,

Добрый день.
Можно так:
Код: plaintext
SELECT * FROM temp WHERE uuid = UT_UUID('abcdef')
Но сравнивать значения пользовательского типа с другим типом пез явного преобразования нельзя.
...
Рейтинг: 0 / 0
21.12.2009, 16:13
    #36377888
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользовательский тип данных в DB2
Можно ещё:
Код: plaintext
1.
create view temp_v (uuid, name) as select char(uuid) uuid, name from temp;
SELECT * FROM temp_v WHERE uuid = 'abcdef';
...
Рейтинг: 0 / 0
21.12.2009, 17:30
    #36378149
Пользовательский тип данных в DB2
Спасибо,

но если невозможна функция типа

CREATE FUNCTION "-" (mydec, mydec) RETURNS mydec SOURCE "-" (DECIMAL, DECIMAL);

только для оператора "=" всё остальное только усложнит задачу так как таблиц очень много
и они часто могут менять свою структуру, что в свою очередь усложнит алгоритмы генерации
DDL для базы. Проще отказаться от UDT а построить метаданные на LT DB2, хотя конечно типы
данных предопределены и менятся не будут и в клиенте будет просто идентифицировать назначение
полей по их типу.
...
Рейтинг: 0 / 0
22.12.2009, 09:53
    #36379008
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользовательский тип данных в DB2
Александр Ведерниковно если невозможна функция типа

CREATE FUNCTION "-" (mydec, mydec) RETURNS mydec SOURCE "-" (DECIMAL, DECIMAL);
...И так тоже можно.
Например:
Код: plaintext
1.
2.
3.
4.
create distinct type mydec as decimal( 10 ,  2 ) with comparisons;
create function "-" (mydec, mydec) returns mydec source "-"(decimal, decimal);
values mydec(dec( 1 . 5 ,  10 ,  2 )) - mydec(dec( 1 . 4 ,  10 ,  2 ));
create function "+" (a mydec, b mydec) returns mydec return mydec(decimal(a)+decimal(b));
values mydec(dec( 1 . 5 ,  10 ,  2 )) + mydec(dec( 1 . 4 ,  10 ,  2 ));
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Пользовательский тип данных в DB2 / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]