Запросы, планы, оптимизация запросов, ...
Модераторы: kdv, CyberMax
-
_so_
- Сообщения: 144
- Зарегистрирован: 04 ноя 2004, 22:17
Сообщение
_so_ » 16 июн 2005, 11:39
Что-то я не понял. Испольщовать пармаметры для udf нельзя?
Тогда как-то страно орет.
Код: Выделить всё
DECLARE EXTERNAL FUNCTION ASINTEGER
INTEGER
RETURNS INTEGER BY VALUE
ENTRY_POINT 'AsInteger' MODULE_NAME 'oeudf.dll'
select * from visualagents
where ID=AsInteger(:AID)
Dynamic SQL Error.
SQL error code = -804.
Data type unknown.
Странно. Почему unknown?
-
hvlad
- Разработчик Firebird
- Сообщения: 1244
- Зарегистрирован: 21 мар 2005, 10:48
Сообщение
hvlad » 16 июн 2005, 15:01
А смысл ? Передавать с клиента значение, которое заведомо будет преобразовано
-
_so_
- Сообщения: 144
- Зарегистрирован: 04 ноя 2004, 22:17
Сообщение
_so_ » 16 июн 2005, 15:19
Данный запрос для примеру.
Смысл что не компилировать запрос каждый раз, когда онвыполняется многократно.
-
kdv
- Forum Admin
- Сообщения: 6595
- Зарегистрирован: 25 окт 2004, 18:07
Сообщение
kdv » 16 июн 2005, 16:42
Смысл что не компилировать запрос каждый раз, когда онвыполняется многократно.
да вот нету смысла. По уму надо в программе писать
ParamByName('FIELD').asInteger:=...
а не иначе, и не морочить голову ненужными преобразованиями на сервере.
-
_so_
- Сообщения: 144
- Зарегистрирован: 04 ноя 2004, 22:17
Сообщение
_so_ » 16 июн 2005, 17:11
Да блин, что вы как всегда обращаете внимание на простые примеры.
Например нужно искать подстроку в блобе.
select * from Table
where PosBlob(Table.FieldBlob, :SubStr ) > 0
Какя я заранее сделаю преобразовнию. Просканию файл БД что ли.
-
hvlad
- Разработчик Firebird
- Сообщения: 1244
- Зарегистрирован: 21 мар 2005, 10:48
Сообщение
hvlad » 16 июн 2005, 18:12
В FB2 вот это работает
Код: Выделить всё
SELECT RDB$FIELD_NAME
FROM RDB$RELATION_FIELDS
WHERE F_STRPOS(RDB$FIELD_NAME, :s, 0) <> 0
-
kdv
- Forum Admin
- Сообщения: 6595
- Зарегистрирован: 25 окт 2004, 18:07
Сообщение
kdv » 16 июн 2005, 20:31
where PosBlob(Table.FieldBlob, :SubStr ) > 0
Какя я заранее сделаю преобразовнию. Просканию файл БД что ли.
asString не работает? ну сформируй статический запрос вместо параметров. Экономщик - у тебя поиск внутри блоба в тыщи раз медленнее чем твоя экономия на prepare.
-
_so_
- Сообщения: 144
- Зарегистрирован: 04 ноя 2004, 22:17
Сообщение
_so_ » 17 июн 2005, 09:05
Ошибка возникает на Prepare. Можно искать не только в блобах но и в строках, а также могут быть другие ограничения по другим индексируемым полям. И к тому же это спорно. Если только это не embeded сервер.
Ругаться тогда нормально, что это запрещено, а не неизвестный тип.
Если в FB 2.0 рабоает, это хорошо. Но мне больше нравиться IB.
Если когда-нибудь в FB появится нормальный SS подумаю на него переходить. Это мое личное мнение.
-
hvlad
- Разработчик Firebird
- Сообщения: 1244
- Зарегистрирован: 21 мар 2005, 10:48
Сообщение
hvlad » 17 июн 2005, 13:32
_so_ писал(а):Но мне больше нравиться IB.
Пиши в borland. Делай запись в QC. Лет через 5 тебе скажут, почему это плохо и как ты неправ
_so_ писал(а):Если когда-нибудь в FB появится нормальный SS подумаю на него переходить.
А никто и не просит
На вот, почитай на досуге о "нормальном" SS
http://sourceforge.net/mailarchive/foru ... um_id=6330