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



             

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


} catch (Exception e) { e.printStackTrace(); System.out.println(e.toString()); } }

Последняя функция ODCITableClose необходима для закрытия курсора и контекста. public BigDecimal ODCITableClose() throws SQLException { StoredCtx ctx; try { ctx = (StoredCtx) ContextManager.clearContext(key.intValue()); } catch (InvalidKeyException ik) { return ERROR; } : // Обращаемся к RMI серверу и закрываем курсор к Express :

ctx = null; return SUCCESS; }

Теперь можно создать конвейерную табличную функцию, для которой тип T_SALES_ROWSET будет реализующим ее. ---------------------------------------------- -- Конвейерная функция на основе t_sales_rowset ----------------------------------------------- create or replace function getExpressSales(query varchar2) return t_sales_table pipelined using t_sales_rowset;

Теперь для того, чтобы создать представление в СУБД на основе этой функции, нам надо сформировать запрос к Express Server. Для создания SNAPI запросов мы создали специальное приложение Express SNAPI Query Builder, с помощью которого мы соединяемся с Express и строим с помощью стандартного Express мастера запрос.

В итоге получаем запрос к Express Server в следующем виде:

DB0=DEMO.DB\ DBCount=1\ MeasureCount=1\ Measure0=SALES\ E0Count=2\ E1Count=1\ E2Count=1\ E0Dim0Name=XP_MEASUREDIM\ E0Dim0Script=CALL XP_SLLIMIT('XP_MEASUREDIM', 'CUBE','SALES')\ E0Dim1Name=MONTH\ E0Dim1Script=call XP_SELEVALUATE( 'MONTH', NA )\ E0Dim1DimLName=MONTH\ E0Dim1Hier=\ E1Dim0Name=PRODUCT\ E1Dim0Script=call XP_SELEVALUATE( 'PRODUCT', NA )\ E1Dim0DimLName=PRODUCT\ E1Dim0Hier=\ E2Dim0Name=DISTRICT\ E2Dim0Script=call XP_SELEVALUATE( 'DISTRICT', NA )\ E2Dim0DimLName=DISTRICT\ E2Dim0Hier=\ QL=1\

Создаем на его основе представление ---------------------------------------------- -- Представление для SALES ----------------------------------------------- create or replace view v_express_sales as select * from table(getExpressSales('DB0=DEMO.DB\ DBCount=1\MeasureCount=1\Measure0=SALES\E0Count=2\E1Count=1\E2Count=1\E0Dim0Name=XP_MEASUREDIM\ E0Dim0Script=CALL XP_SLLIMIT(''XP_MEASUREDIM'', ''CUBE'',''SALES'')\E0Dim1Name=MONTH\ E0Dim1Script=call XP_SELEVALUATE( ''MONTH'', NA )\E0Dim1DimLName=MONTH\ E0Dim1Hier=\E1Dim0Name=PRODUCT\E1Dim0Script=call XP_SELEVALUATE( ''PRODUCT'', NA )\ E1Dim0DimLName=PRODUCT\E1Dim0Hier=\ E2Dim0Name=DISTRICT\E2Dim0Script=call XP_SELEVALUATE( ''DISTRICT'', NA )\ E2Dim0DimLName=DISTRICT\E2Dim0Hier=\QL=1\'));




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