powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Informix [игнор отключен] [закрыт для гостей] / Update сlob field
19 сообщений из 19, страница 1 из 1
Update сlob field
    #35637098
Фотография Sicheslav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проблема при попытке сделать update для clob-поля:
Код: plaintext
1.
2.
3.
4.
5.
6.
CREATE TABLE testclob(
   fid INTEGER,
   fcontent clob)
EXTENT SIZE  16  NEXT SIZE  16  LOCK MODE PAGE;

CREATE INDEX testclob_fidind ON testclob(fid);

процедурка :

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
    Q1.Close;
    IfxTable1.Open;
   Q1.SQL.Text:='update   testclob set   (fcontent=:fcontent) where  fid=:fid ;';
    Q1.Params.Assign( IfxTable1.Fields );
    IfxTable1.Close;

   Q1.ParamByName('fcontent').AsClob.LoadFromFile('D:\1.bmp');
   Q1.ParamByName('fid').AsInteger :=  2 ;
    Q1.Execute;
ошибка печалит:

Код: plaintext
1.
2.
3.
4.
5.
- 201 

_______________ 

A syntax error has occurred. 

аналогичный INSERT работает.

И... Аналогичный запрос для int поля отрабатывает нормально.
Отсюда - какая-то специфика при Update для Блоб-полей должна быть?






always and everywhere for
Good
...
Рейтинг: 0 / 0
Update сlob field
    #35637151
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
clob это character blob
вам нужен тип blob
...
Рейтинг: 0 / 0
Update сlob field
    #35637175
Фотография Sicheslav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Журавлев Денисclob это character blob
вам нужен тип blob
К сожалению тип СЛОБ - приказ свыше...=)
Дело в том что для типа blob зеркалирование не осуществляется :(, а это необходимое условие...
Это проблема из-за типа блоба?
...
Рейтинг: 0 / 0
Update сlob field
    #35637181
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
делать надо както так

Q1.paramschek := true;
Q1.SQL.Text:='update testclob set (fcontent=:fcontent) where fid=:fid;'
Q1.Params[0].LoadFromFile('D:\1.bmp', ftBlob);
Q1.ExecSQL;
...
Рейтинг: 0 / 0
Update сlob field
    #35637197
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SicheslavЖуравлев Денисclob это character blob
вам нужен тип blob
К сожалению тип СЛОБ - приказ свыше...=)
Дело в том что для типа blob зеркалирование не осуществляется :(, а это необходимое условие...
Это проблема из-за типа блоба?вы там курите что-то?
...
Рейтинг: 0 / 0
Update сlob field
    #35637435
Фотография Sicheslav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет. к сожалению ничего :).(не на что сослаться)
о Вашем варианте:
я раньше этот вариант. сдесь для такого же
Код: plaintext
Q1.SQL.Text:='insert into testblob(fcontent,fid)values(:fcontent,:fid);';
INSERT'a выдает
-609
Illegal attempt to use Text/Byte host variable.
как выход я стал использовать Идак (нативные?) компоненты...

для данного варианта update тоже самое:
-201
__________________________________________________________
A syntax error has occurred.


разница только в том что я использую Q1: TIfxSQL; - может в этом проблема?
(Execute а не ExecuteSQL)


always and everywhere for
Good
...
Рейтинг: 0 / 0
Update сlob field
    #35638319
Фотография Sicheslav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извиняюсь за ошибки... Но мы здесь уже 2 недели курим help по IDS 11.50=(маловато наверное)))
Задача: пересмотр и вставка (по возможности) ч-з процедуру файловых данных(фото/сканеные документы).
все это в BorlandDelphi6.0
Так вот...Как не удивительно для TifxTable работа с БД проходит нормально (просмотр/вставка/замена данных Clob)
Проблема: замена данных в clob ч-з Tifxquery/TIfxSQ (IDAC 2.6.3)
Вставка(Insert) работает...


always and everywhere for
Good
...
Рейтинг: 0 / 0
Update сlob field
    #35638731
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SicheslavДело в том что для типа blob зеркалирование не осуществляется :(, а это необходимое условие...


Ложите blob в табличку, а не в blobspace
...
Рейтинг: 0 / 0
Update сlob field
    #35640841
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть типы byte text
а есть bloc clob

операции с первыми типами логируются и попадают на секондари сервер если они лежат прямо в таблице, а не в blobspace. Типы blob и clob лежат в smartblobspace , для каждой операции можно указать логировать или нет, буфферизовать или нет. smartblob очень фичастая штука можно считать только опеределенный кусок можно изменить только часть или дописать в конец

пример работаты с типом byte:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
  IfxConnection1.Open;
  IfxQuery1.SQL.Text := 'create table teb(a integer, b byte)';
  IfxQuery1.ExecSQL;
// вставка
  IfxQuery1.SQL.Text := 'insert into teb (a, b) values (1, :bl)';
  IfxQuery1.Params[ 0 ].LoadFromFile('c:\ntldr', ftblob);
  IfxQuery1.ExecSQL;
// обновление
  IfxQuery1.SQL.Text := 'update teb set b = :bl where a = 1';
  IfxQuery1.Params[ 0 ].LoadFromFile('c:\ntldr', ftBlob);
  IfxQuery1.ExecSQL;

пример работаты с типом blob:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
uses
  , IfxLob, IfxLocator;
var
  ibl: iIfxLob;
begin
  IfxSQL1.SQL.Text := 'create table teb(a integer, b blob)';
  IfxSQL1.Execute;

// создаем smartblob, загружаем в базу, получаем локатор на него
  ibl := TIfxLob.Create(IfxConnection1);
  ibl.LoadFromFile('c:\ntldr', LO_CLIENT_FILE);

// вставляем локатор
  IfxSQL1.SQL.Text := 'insert into teb (a, b) values (1, :bl)';
  IfxSQL1.Params[ 0 ].AsBlob := ibl;
  IfxSQL1.Execute;

// изменение smartblob, выбираем локатор
  IfxSQL1.SQL.Text := 'select b from teb where a = 1';
  IfxSQL1.Open;
  ibl := IfxSQL1.Fields[ 0 ].AsBlob;
  IfxSQL1.Close;

// открываем на запись/чтение, пишем , сохраняем
  ibl.Open(LO_RDWR);
  ibl.LoadFromFile('c:\ntldr', LO_CLIENT_FILE);
  ibl.Close;
...
Рейтинг: 0 / 0
Update сlob field
    #35643379
Фотография Sicheslav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Весьма благодарен...


always and everywhere for
Good
...
Рейтинг: 0 / 0
Update сlob field
    #35654315
Tkachenko Roman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите как будет выглядеть код с передачай в процедуру параметра blob

Пытался следующим образом:

var
AIfxLob: TIfxLob;
begin
...
AIfxLob := TIfxLob.Create(IfxConnection);
AIfxLob.LoadFromStream(FStream, FStream.Size);
AIfxLob.Close;

IfxSQL1.Close;
IfxSQL1.Params[0].AsBlob := AIfxLob;
IfxSQL1.Execute;

IfxSQL1.SQL.Text = 'execute procedure myproc(:bdata)';

Процедура определена:
CREATE DBA PROCEDURE myproc (pbData BLOB)
...
Рейтинг: 0 / 0
Update сlob field
    #35655162
Фотография Sicheslav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Та... И я видно мало покурил...
С процедурами так и не работает...
пример вызова аналогичный примеру Tkachenko Roman(за исключением загрузки самого блоба - из файла ).



На счет UPDATE: :(

И вообще : как должна выглядеть процедура подгрузки блоб-поля....
(Ибо вариант с Select (выборка локатора) работает только для УЖЕ созданного локатора. А если локатора не существует обновление не работает...

always and everywhere for
Good
...
Рейтинг: 0 / 0
Update сlob field
    #35657291
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tkachenko RomanПодскажите как будет выглядеть код с передачай в процедуру параметра blob
Пытался следующим образом:
Плохо пытались, у меня все рабоает. А вам чем тип byte не угодил?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
var
  ibl: iIfxLob;

begin
  IfxSQL1.SQL.Text := 'create table teb(a integer, b blob)';
  IfxSQL1.Execute;

  IfxSQL1.SQL.Text := 'CREATE PROCEDURE myproc(pbData BLOB) insert into teb (a,b) values (1, pbData); end PROCEDURE;';
  IfxSQL1.Execute;

  ibl := TIfxLob.Create(IfxConnection1);
  ibl.LoadFromFile('c:\trace.ini', LO_CLIENT_FILE);

  IfxSQL1.SQL.Text := 'execute procedure myproc(:bdata)';
  IfxSQL1.Params[ 0 ].AsBlob := ibl;
  IfxSQL1.Execute;
...
Рейтинг: 0 / 0
Update сlob field
    #35657314
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SicheslavТа... И я видно мало покурил...
С процедурами так и не работает...
пример вызова аналогичный примеру Tkachenko Roman(за исключением загрузки самого блоба - из файла ). Код в студию, ошибку в студию, телепаты уволились.


Sicheslav
На счет UPDATE: :(

И вообще : как должна выглядеть процедура подгрузки блоб-поля....
(Ибо вариант с Select (выборка локатора) работает только для УЖЕ созданного локатора. А если локатора не существует обновление не работает...
Естественно, если выбирается null, надо создавать блоб, и апдейтить его локатором поле в таблице, а вы как хотели? сами тип blob выбрали, берите byte и не парьтесь.
...
Рейтинг: 0 / 0
Update сlob field
    #35659959
Tkachenko Roman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Выдаёт следующую ошибку при выполнении Execute:

Cannot determine host variable type during bind.

Описание которой я нашёл здесь:
http://www-01.ibm.com/support/docview.wss?rs=681&context=SSVT2J&dc=DB550&uid=swg1IC49963&loc=en_US&cs=UTF-8〈=en&rss=ct681db2

Тип поля Byte сейчас и используется, но хотелось воспользоваться в процедурах возможностью blob полей.

Использую:
Delphi 7
Informix connect v2_30 TC1
Luxena IDAC 2.6.3.62
...
Рейтинг: 0 / 0
Update сlob field
    #35660039
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tkachenko RomanВыдаёт следующую ошибку при выполнении Execute:

Cannot determine host variable type during bind.
мой пример copy&paste тоже ошибку дает?
...
Рейтинг: 0 / 0
Update сlob field
    #35660055
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tkachenko Roman
Тип поля Byte сейчас и используется, но хотелось воспользоваться в процедурах возможностью blob полей.
какой возможностью?
...
Рейтинг: 0 / 0
Update сlob field
    #35660177
Фотография Тан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tkachenko RomanИспользую:
Informix connect v2_30 TC1
действительно такая версия клиента? думаю, версия 2.30 не знает про типы blob-clob
...
Рейтинг: 0 / 0
Update сlob field
    #35668289
Фотография Sicheslav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Весьма благодарен... Проблема c процедурами решена.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / Update сlob field
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]