Домены в параметрах ХП

Marty77
Дата: 02.11.2005 07:19:34
Запутавшись в форматах данных, завел для каждого типа домены. И столкнулся с такой проблемой - нельзя использовать домен в параметрах хранимой процедуры.
домен создаю так
CREATE DOMAIN TGUID AS CHAR(26) CHARACTER SET OCTETS
процедура
CREATE PROCEDURE PERFORM_TASK (ID TGUID)
AS
BEGIN
...
Имею
Create procedure failed
Status: 335544569, SQL Error code: -104
Dynamic SQL Error. SQL error code = -104. Token unknown - line 1, char 34. TGUID

Использую родное interbase/firebird API

Что я не так делаю? Или так нельзя? Тогда вопрос такой, как мне потом не ошибиться в типах параметров ХП?
srf2000
Дата: 02.11.2005 07:26:47
Marty77
Что я не так делаю? Или так нельзя?


нельзя

Marty77
Тогда вопрос такой, как мне потом не ошибиться в типах параметров ХП?


странный вопрос
Marty77
Дата: 02.11.2005 07:39:20
И еще. Эту процедуру я использую для удаления записей. Через процедуру сделал на всякий случай, вдруг логика удаления поменяется, мне проще процедуру подправить. Так вот, если я пытаюсь создать эту процедуру с доменом в параметре, то она не создается, или я вообще не создаю эту процедуру, то все работает замечательно.
Если я таки создаю эту процедуру, то перестают работать INSERTы такого вида
INSERT INTO CATS_INFO (ID_CAT, ID_LANG, NAME) VALUES ('00000000000000000000000000', 'en', 'Uncategorized')".
ID_CAT, ID_LANG - описаны как домены, но в процедуру для удаления передаются как CHAR(26). Приведу уж целиком процедуру
CREATE PROCEDURE DELETE_CATEGORY (ID CHAR(26)) AS
BEGIN
DELETE FROM CATEGORIES WHERE ID_CAT=:ID;
END

в параметр пробовал добавить CHARACTER SET OCTETS, чтоб было идентично описанию домена, не помогло.

Причем эти инсерты отрабатывают по тихому, в моем коде ошибки не возникает (хотя может я не все ситуации отлавливаю), но в базу не добавляют ничего
Marty77
Дата: 02.11.2005 07:42:49
srf2000
Marty77
Что я не так делаю? Или так нельзя?


нельзя

Marty77
Тогда вопрос такой, как мне потом не ошибиться в типах параметров ХП?


странный вопрос


Просто база в процессе разработки, и типы данных меняются при появлении новых идей. Можно в одном месте поменять, а в другом забыть. С CHAR,VARCHAR кучи проблем - то размер не тот, то чарсет не тот, в результате запросы, которые должны работать, не работают без явно выраженных причин
Marty77
Дата: 02.11.2005 08:01:05
Причем эти инсерты отрабатывают по тихому, в моем коде ошибки не возникает (хотя может я не все ситуации отлавливаю), но в базу не добавляют ничего[/quot]

Черт. Я ужасно затупил. Insert'ы отрабатывают, просто эти даные потом удаляются по CONSTRAIT ON DELETE CASCADE. Виноват, буду внимательнее ;-)
Лентяй
Дата: 02.11.2005 09:14:46
Marty77
Запутавшись в форматах данных, завел для каждого типа домены. И столкнулся с такой проблемой - нельзя использовать домен в параметрах хранимой процедуры.

Нельзя использовать домены в параметрах процедуры. Я так понимаю, что серверу не сильно сложно разобраться с доменами при создании/корректировке процедуры, а вот при изменении домена проверять все процедуры в которых он используется проблематичнее...
ASCRUS
Дата: 02.11.2005 10:08:10
Лентяй
Marty77
Запутавшись в форматах данных, завел для каждого типа домены. И столкнулся с такой проблемой - нельзя использовать домен в параметрах хранимой процедуры.

Нельзя использовать домены в параметрах процедуры. Я так понимаю, что серверу не сильно сложно разобраться с доменами при создании/корректировке процедуры, а вот при изменении домена проверять все процедуры в которых он используется проблематичнее...

А разве в FB разрешено изменение домена, который задействован в таблицах ?
Лентяй
Дата: 02.11.2005 10:15:52
ASCRUSА
разве в FB разрешено изменение домена, который задействован в таблицах ?

ALTER DOMAIN changes any aspect of an existing domain except its NOT NULL setting.
Changes that you make to a domain definition affect all column definitions based on the
domain that have not been overridden at the table level.
Лентяй
Дата: 02.11.2005 10:17:50
Вообще-то я ими не пользуюсь. Как-раз кстати из-за того, что их в sp не получается задействовать.
srf2000
Дата: 02.11.2005 10:20:29
ASCRUS
Лентяй
Marty77
Запутавшись в форматах данных, завел для каждого типа домены. И столкнулся с такой проблемой - нельзя использовать домен в параметрах хранимой процедуры.

Нельзя использовать домены в параметрах процедуры. Я так понимаю, что серверу не сильно сложно разобраться с доменами при создании/корректировке процедуры, а вот при изменении домена проверять все процедуры в которых он используется проблематичнее...

А разве в FB разрешено изменение домена, который задействован в таблицах ?


разрешено, с ограничениями конечно. например, varchar(50) в varchar(10) не поменяешь