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
Что я не так делаю? Или так нельзя? Тогда вопрос такой, как мне потом не ошибиться в типах параметров ХП?
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. Виноват, буду внимательнее ;-)