Базы данных Oracle - статьи



              

Пример использования - часть 2


Первая функция ODCITableStart, необходимая для создания контекста и открытия курсора. Для нее входящим параметром будет Express запрос.

static public BigDecimal ODCITableStart(STRUCT[] sctx, String query) throws SQLException { // Соединение текущей сессии Connection conn = new OracleDriver().defaultConnection(); // Создаем контекст запроса, StoredCtx - произвольный класс, его определяем мы сами StoredCtx ctx = new StoredCtx(query); int key; try { // Создаем ключ для нашего контекста key = ContextManager.setContext(ctx); } catch (CountException ce) { return ERROR; } Object[] impAttr = new Object[1]; impAttr[0] = new BigDecimal(key); // Создаем дескриптор для нашего ODCITable типа в базе StructDescriptor rowset = StructDescriptor.createDescriptor("T_SALES_ROWSET", conn); // Заполняем тип

sctx[0] = new STRUCT(rowset, conn, impAttr); : // Далее мы обращаемся к RMI серверу и отправляем запрос Express : return SUCCESS; }

Вторая функция ODCITableFetch необходима для получения новой порции данных из выборки. Для нее входящим параметром будет Express запрос.

public BigDecimal ODCITableFetch(BigDecimal nrows, ARRAY[] outSet) throws SQLException { StoredCtx ctx; try { // Получаем контекст по ключу ctx = (StoredCtx) ContextManager.getContext(key.intValue()); } catch (InvalidKeyException ik) { return ERROR; } Connection conn = new OracleDriver().defaultConnection(); try { ArrayList list = _srv.fetchQuery(ctx.nQueryId, nrowsval);

StructDescriptor cube_row = StructDescriptor. createDescriptor("T_SALES_ROW", conn); ArrayDescriptor cube_table = ArrayDescriptor. createDescriptor("T_SALES_TABLE",conn); ArrayList list = null; : // Получаем в list через обращение к RMI серверу очередную порцию выборки // Пусть она возвращается в виде // { SALES, MONTH , PRODUCT, DISTRICT}, соответствующим типу t_sales_row

:

Object[] table = new Object[list.size()]; int i = 0; // Проходим по всему массиву и заполняем структуру for (Iterator it = list.iterator(); it.hasNext();) { table[i++] = new STRUCT(_cube_row, _conn, (Object[]) it.next()); } // Создаем массив из структуру outSet[0] = new ARRAY(cube_table, conn, table); table = null; list.clear(); list = null; return SUCCESS;




Содержание  Назад  Вперед