Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Передать BLOB без использования Temporary LOB


Страницы:   1 2

dima1983 ©   (2010-06-17 17:56:00) 

Нужно передать параметр BLOB в хранимую процедуру без использования временного LOB локатора. Используются компоненты DOA. Оказалось, что на машине стоят 8 клиены, а они не работают со временными LOBами :).
Сейчас вот так:
...
LOB := TLOBLocator.CreateTemporary(Oq.Session, otBLOB, true);
                      LOB.CopyFrom(ms,ms.size);
(*
Здесь ms это поток, который содержит передаваемые данные
*)
                      with OQ do begin
                          SetComplexVariable('sDoc',LOB);
                           ...
                          Execute;
                          Doc.sNameDoc:=GetVariable('id');
                          ...
                          Session.Commit;
                       end;


Кщд   (2011-04-15 04:31:00) [21]

>dima1983   (14.04.11 22:15) [8]
каждый сам мостит себе дорогу в ад)
успехов)


dima1983   (2011-04-14 22:15:00) [22]


> >dima1983   (13.04.11 11:55) [6]
> >8ой клиент клиент!!! ну читайте же вопрос!
> 8-ой клиент не поддерживает работу с GTT?
>
> >И зачем заводить PK если таблица только для твоего приложения
> и строчка в >ней живет менее минуты.
> затем, что достоверно полагаться можно на PK, но нельзя
> на rowid


Думаю дальше диалог бессмыслен.
Вы такой классный специалист куда там!


Кщд   (2011-04-13 12:07:00) [23]

>dima1983   (13.04.11 11:55) [6]
>8ой клиент клиент!!! ну читайте же вопрос!
8-ой клиент не поддерживает работу с GTT?

>И зачем заводить PK если таблица только для твоего приложения и строчка в >ней живет менее минуты.
затем, что достоверно полагаться можно на PK, но нельзя на rowid


dima1983   (2011-04-13 11:55:00) [24]


> global temporary table.
> и пляски с rowid - чреваты, ибо для записи он может меняться
> со временем.
> поэтому лучше заводить честный PK.

8ой клиент клиент!!! ну читайте же вопрос!
И зачем заводить PK если таблица только для твоего приложения и строчка в ней живет менее минуты.


Кщд   (2011-04-11 08:04:00) [25]

>dima1983   (11.04.11 00:07) [4]

2) Делаете в неё insert (без использования временного LOB локатора)
3) А в процедуру передаете RowId, главное потом не забыть удалить в процедуре после считывания ненужную строчку :))))

global temporary table.
и пляски с rowid - чреваты, ибо для записи он может меняться со временем.
поэтому лучше заводить честный PK.


dima1983   (2011-04-11 00:07:00) [26]

Нашёл случайно свой старый вопрос :)))
Поскольку нормальных ответов на на него так никто и не дал напишу своё решение. Оно очень простое.

1) Создаете табличку в БД с полем BLOB
2) Делаете в неё insert (без использования временного LOB локатора)
3) А в процедуру передаете RowId, главное потом не забыть удалить в процедуре после считывания ненужную строчку :))))

Вот так всё просто и не нужно на Камчатку ехать клиенты обновлять :))) экономит массу гос.средств  :)


Правильный$Вася   (2010-06-17 19:57:00) [27]


> клиентов несколько тысяч от Калиненграда до Камчатки

кто хочет - ищет пути, кто не хочет - ищет отмазки


dima1983   (2010-06-17 19:41:00) [28]


> > Оказалось, что на машине стоят 8 клиены
>
> так заменить на те, которые соответствуют серверу
> я, кстати, неоднократно сталкивался с неработоспособностью
> в некоторых случаях комбинаций разных версий клинетов и
> сервера, что моментально исчезало при синхронизации версий
>
> так что не костыли нужно делать, а переломы лечить


Обязательно, особенно если клиентов несколько тысяч от Калиненграда до Камчатки, это ж как 2 байта переслать :) поменять пару строчек в программе гораздо сложнее :)

Ведь до 8 клиента передавались же как-то BLOB в хранимые процедуры?


Правильный$Вася   (2010-06-17 19:10:00) [29]


> Оказалось, что на машине стоят 8 клиены

так заменить на те, которые соответствуют серверу
я, кстати, неоднократно сталкивался с неработоспособностью в некоторых случаях комбинаций разных версий клинетов и сервера, что моментально исчезало при синхронизации версий

так что не костыли нужно делать, а переломы лечить


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо