Страница 1 из 1
FB1.5 Вопрос по BLOB.
Добавлено: 22 окт 2007, 09:48
_SRG_
Здравствуйте.
Хотел поинтересоваться - возможно ли средствами FB решить следующую задачку...
Возможно ли написать процедуру, которая будет собирать из таблиц поля типа VARCHAR склеивать их и возвращать все собранное в виде BLOB. Т.е. возмножно ли в процедуре создать "псевдо" BLOB накидать туда чего то и вернуть?
Заранее спасибо за помощь.
Добавлено: 22 окт 2007, 10:07
kdv
нет. блоб должен где-то сохраняться.
p.s. вопрос настолько простой, что мог бы и сам проверить перед тем как спрашивать.
Добавлено: 22 окт 2007, 10:33
_SRG_
kdv писал(а):нет. блоб должен где-то сохраняться.
p.s. вопрос настолько простой, что мог бы и сам проверить перед тем как спрашивать.
Согласен. Может быть, я плохо сформулировал вопрос. Меня больше инетерсует не "возможно/не возможно", а каким образом такое можно реализовать?
Добавлено: 22 окт 2007, 11:38
WildSery
kdv писал(а):нет. блоб должен где-то сохраняться.
Вопрос конечно интересный.
Меня всегда интересовало, почему UDF может порождать временный блоб, ни к какой таблице не привязанный, а процедура нет.
Добавлено: 22 окт 2007, 11:46
kdv
а каким образом такое можно реализовать?
которая будет собирать из таблиц поля типа VARCHAR склеивать их
b=a||c.
Добавлено: 22 окт 2007, 11:51
_SRG_
WildSery писал(а):kdv писал(а):нет. блоб должен где-то сохраняться.
Вопрос конечно интересный.
Меня всегда интересовало, почему UDF может порождать временный блоб, ни к какой таблице не привязанный, а процедура нет.
Так. Ну это уже теплее. Т.е. все таки сущестует возможность реализовать необходимую мне штуку с помощью UDF? Хотелось бы по подробнее про это услышать.
Добавлено: 22 окт 2007, 12:08
WildSery
_SRG_ писал(а):Т.е. все таки сущестует возможность реализовать необходимую мне штуку с помощью UDF?
Нет, тебе не пригодится.
UDF не работает с наборами данных.
Каков у тебя объём возвращаемых данных, почему строка не подходит? (ведь информация текстовая, я так понимаю)
Добавлено: 22 окт 2007, 12:23
_SRG_
WildSery писал(а):_SRG_ писал(а):Т.е. все таки сущестует возможность реализовать необходимую мне штуку с помощью UDF?
Нет, тебе не пригодится.
UDF не работает с наборами данных.
Каков у тебя объём возвращаемых данных, почему строка не подходит? (ведь информация текстовая, я так понимаю)
Теоритически объем возвращаемых данных может быть сколь угодно большим, формируется он из простых строк, но при их конкатенации может получиться достаточно большой объем. Вот и была мысли собрать эту всю кучу в "псевдо BLOB" и выкинуть на клиенте.
Добавлено: 22 окт 2007, 12:31
_SRG_
kdv писал(а):а каким образом такое можно реализовать?
которая будет собирать из таблиц поля типа VARCHAR склеивать их
b=a||c.
Вам это кажется смешным? Мне - нет.
Вопрос мой не с луны упал. Данную методику применял ранее, где в качестве СУБД выступал Oracle. Там была процедура которая собирала необходимые данные, формируя, в результате BLOB содержащий XML с данными (частенько - ОЧЕНЬ большого размера) все это возвращалось на клиента и сохранялось в файл. Именно поэтому возник вопрос о реализации аналогичного механизма в FB.
Добавлено: 22 окт 2007, 13:09
kdv
Вам это кажется смешным? Мне - нет.
я ничего смешного тут не вижу. Вы пока теоретизируете, или все-таки хоть что-нибудь попробовали?
Хотя скорее всего из идеи долго чего-то склеивать в блоб вряд-ли что получится. Не совсем ясно, зачем это делать на сервере и пересылать клиенту, если клиент сам может сделать то же самое, причем в данном случае куда проще.
Добавлено: 22 окт 2007, 15:38
_SRG_
kdv писал(а):Вам это кажется смешным? Мне - нет.
я ничего смешного тут не вижу. Вы пока теоретизируете, или все-таки хоть что-нибудь попробовали?
Хотя скорее всего из идеи долго чего-то склеивать в блоб вряд-ли что получится. Не совсем ясно, зачем это делать на сервере и пересылать клиенту, если клиент сам может сделать то же самое, причем в данном случае куда проще.
К сожалению, решить данную проблему на клиенте в моих условиях не возмно. Вопрос звучал - Возможно ли со стороны сервера собрать строки в BLOB и вернуть.
Добавлено: 22 окт 2007, 16:21
WildSery
_SRG_ писал(а):К сожалению, решить данную проблему на клиенте в моих условиях не возмно. Вопрос звучал - Возможно ли со стороны сервера собрать строки в BLOB и вернуть.
Не выйдет.
Даже в 2.1 можно напрямую работать с текстовыми блобами только до размера 32 килобайта.
Аргументируй, почему нельзя сделать на клиенте, и я возможно дам совет, хоть и проктологический, как можно-таки сделать этот блоб.
Добавлено: 22 окт 2007, 17:01
Slavik
Ну почему все так категорично: Нет и всё.
Можно

. Связка процедуры с несложной UDF, которая собственно и приклеивает к BLOB'у очередной строковый кусочек должна работать... Правда я не уверен на счёт скорости работы и расхода памяти. Но опять же, можно "кэшировать" обращения к UDF до 32Кб в строковой переменной.
Добавлено: 22 окт 2007, 17:44
WildSery
Slavik писал(а):Можно

Щас научишь плохому.
Возможно, всё решается проще. Пусть автор скажет-таки, куда это ему запихать надо.
Добавлено: 23 окт 2007, 08:57
Карабас Барабас
_SRG_ писал(а):процедура которая собирала необходимые данные, формируя, в результате BLOB содержащий XML с данными (частенько - ОЧЕНЬ большого размера) все это возвращалось на клиента и сохранялось в файл. Именно поэтому возник вопрос о реализации аналогичного механизма в FB.
А выдавать на клиента построчно не подойдет ?
Добавлено: 24 окт 2007, 21:41
_SRG_
Вопрос решился ограничением собираемой строки <= VARCHAR(MAX_LEN).
Новая головоломка -
http://forum.ibase.ru/phpBB2/viewtopic.php?t=3948