powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Пользовательский тип данных в DB2
5 сообщений из 5, страница 1 из 1
Пользовательский тип данных в DB2
    #36377578
Добрый день,

есть необходимость создать свой тип данных который бы потом можно было
использовать в операторе 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
Пользовательский тип данных в DB2
    #36377616
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Александр Ведерников,

Добрый день.
Можно так:
Код: plaintext
SELECT * FROM temp WHERE uuid = UT_UUID('abcdef')
Но сравнивать значения пользовательского типа с другим типом пез явного преобразования нельзя.
...
Рейтинг: 0 / 0
Пользовательский тип данных в DB2
    #36377888
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно ещё:
Код: 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
Пользовательский тип данных в DB2
    #36378149
Спасибо,

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

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

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

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
5 сообщений из 5, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Пользовательский тип данных в DB2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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