powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / DB2 CLI LOB locators problem
2 сообщений из 2, страница 1 из 1
DB2 CLI LOB locators problem
    #37447304
Intser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Работаю с DB2 через CLI интерфейс. Возникла необходимость работать с лобными данными используя локаторы. Получение локатора и его использование работает как и описывает документация. Однако нужно ли что-то делать для освобождения локатора дополнительно написано крайне мутно. Предположим есть таблица с полями B BLOB(1M), C CLOB(1M), выполняю селект в нее - после первого фетча получаю локаторы для блоба и клоба - работаю с ними. Далее судя по доке и примерам надо выполнить статемент FREE LOCATOR ?, ? - выполняю, все ок. Делается следующий фетч, работаю с локаторами и при попытке выполнить FREE LOCATOR еще раз получаю:
SQL0423N Locator variable "1" does not currently represent any value. SQLSTATE=0F001
Пример в стиле ибм конечно же не рассматривает такой случай - у них рассмотрен вариант с 1 записью
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
/* ---------------- free the LOB locator ----------------------------------*/

  /* allocate a statement handle */
  cliRC = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmtLocFree);
  DBC_HANDLE_CHECK(hdbc, cliRC);

  /* bind a parameter marker to a buffer or LOB locator */
  cliRC = SQLSetParam(hstmtLocFree,
                       1 ,
                      SQL_C_CLOB_LOCATOR,
                      SQL_CLOB_LOCATOR,
                       0 ,
                       0 ,
                      &clobLoc,
                      NULL);
  STMT_HANDLE_CHECK(hstmtLocFree, hdbc, cliRC);

  printf("\n  Free the LOB locator.\n");

  /* directly execute the statement */
  cliRC = SQLExecDirect(hstmtLocFree, stmtLocFree, SQL_NTS);
  STMT_HANDLE_CHECK(hstmtLocFree, hdbc, cliRC);
Может кто работал с локаторами - нужно ли выполнять FREE LOCATOR и если нужно то когда? После всех фетчей скорее всего не подходит потому что на последнем фетче лобы могут быть нуловые и локаторов не будет. Причем выполнение FREE LOCATOR после каждого фетча работает на версии 9.1 и не работает на 9.5 и 9.7.
...
Рейтинг: 0 / 0
DB2 CLI LOB locators problem
    #37452927
Intser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разобрался. Локаторы переюзываются, т.е. освобождать после каждого фетча нельзя.
Вызов FREE LOCATOR требуется при закрытии курсора на не-NULL локаторы.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / DB2 CLI LOB locators problem
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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