Vlad Horsun пишет:
"Tonal" ...
Идея простая: сделать клиентскую конвертацию типов на основе доменов.
D_BOOL <-> bool, D_ICON <-> TIcon, D_XML <-> TXmlDocument...
В случае, если домена нет, например для выражения, можно использовать
базовый тип или явно кастить. Но сейчас явно кастить бессмысленно, т.к.
всё равно на клиенте информации о домене не получишь.
    Если различия в типах (доменах) понятно только клиенту, то не нужно
тянуть это в сервер. Серверу фиолетово что хранить в блобе - TIcon или
TXmlDocument.
TIcon можно и в varchar-е хранить, да и xml тоже.
Причём конкатинировать D_XML может быть вполне осмысленно, а D_ICON точно нет. ;-) Если сервер различает домены в параметрах процедур и при явном касте, почему не дать получить эту инфу клиенту, чтобы он мог её тоже использовать.
Сейчас, я вижу только 2 возможности конвертации типов:
1) Кодировать для каждого запроса позиционно или по именам
2) Использовать соглашения о наименовании однотипных полей.
Первое - утомительно, а значит провоцирует ошибки.
Второе - излишне при присутствии системе доменов.
Если дать возможность быстро получить домен, будет ещё третий путь.
Ну и кроме того, основываясь на этих сведениях некоторые ошибки можно будет отловить на этапе prepare:
update T1 set IS_ACTIVE = ? where ID = ?
Клиент после prepare увидит что IS_ACTIVE имеет домен D_BOOL стало быть в его нельзя совать 10. ;-)

Ответить