Data type unknown

Модераторы: kdv, CyberMax

Ответить
qvd
Сообщения: 27
Зарегистрирован: 10 янв 2007, 11:52

Data type unknown

Сообщение qvd » 21 фев 2007, 17:00

Добрый день!
Есть такой запрос:

Код: Выделить всё

update MAIN
set
  ABONENT = :ABONENT,                                                   (integer)
  ADRES = EnCrypt(:ADRES)                                             (varchar)
where
  ID = :OLD_ID
при выполнении - ошибка Data type unknown,
если так ADRES = :ADRES - все работает.
Может необходимо что-то вроде ADRES = EnCrypt(:ADRES) as varchar ... Что делать?
FB 1.5, IbDataSet.

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 21 фев 2007, 18:28

Пробовал выставить вручную тип параметра?

qvd
Сообщения: 27
Зарегистрирован: 10 янв 2007, 11:52

Сообщение qvd » 22 фев 2007, 09:13

А как это сделать?
Я попробовал :ABONENT As Integer - ругается на as...

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Сообщение Dimitry Sibiryakov » 22 фев 2007, 09:29

qvd писал(а):А как это сделать?
Согласно документации к используемому набору компонент доступа.

qvd
Сообщения: 27
Зарегистрирован: 10 янв 2007, 11:52

Сообщение qvd » 22 фев 2007, 09:42

А причем тут компоненты доступа? Меня интересует сам запрос, а отлаживаю я его в IbExpert.

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Сообщение Dimitry Sibiryakov » 22 фев 2007, 09:57

Тогда к чему было твое упонимание ibdataset? И вообще - что-то ты не договариваешь... Покажи объявление EnCrypt.

qvd
Сообщения: 27
Зарегистрирован: 10 янв 2007, 11:52

Сообщение qvd » 22 фев 2007, 10:02

IbDataset я упомянул на всякий случай, а объявление функции вот:

Код: Выделить всё

DECLARE EXTERNAL FUNCTION ENCRYPT
    CSTRING(250)
RETURNS CSTRING(250) FREE_IT
ENTRY_POINT 'EnCrypt_' MODULE_NAME 'taxi.dll'
Сама функция работает отлично (вызывается часто из ХП).

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 22 фев 2007, 12:19

Сдаётся мне, что делаешь ты всёж-таки не то, что показываешь нам.
Такой апдейт из эксперта выполнится на ура.
Кстати, эксперт не пятилетней давности?

qvd
Сообщения: 27
Зарегистрирован: 10 янв 2007, 11:52

Сообщение qvd » 22 фев 2007, 12:25

Нет, что показал на форуме, то и делаю, IbExpert - 2006.12.24,
при выполнении этого запроса сообщает:

Код: Выделить всё

An error was found in the application program input parameters for the SQL statement.
Dynamic SQL Error.
SQL error code = -804.
Data type unknown.
Я так понимаю, что сервер незнает, что за тип будет у параметра (EnCrypt ожидает CString), а вот как явно указать серверу тип параметра? (хотя мог бы уже выполнить неявное преобразование..)

qvd
Сообщения: 27
Зарегистрирован: 10 янв 2007, 11:52

Сообщение qvd » 22 фев 2007, 15:56

Поставил FB 2.0 - запрос прекрасно заработал!
Вернул 1.5 - блин, та-же лажа .... Почему интересно?

Ответить