Top Banner
10g SQL MODEL clause Чекин Калоянов, ТехноЛогика ЕООД [email protected] BGOUG, Пампорово – 14-16 април 2006
44

10g SQL MODEL clause

Jan 05, 2016

Download

Documents

manasa

10g SQL MODEL clause. Чекин Калоянов, ТехноЛогика ЕООД [email protected] BGOUG, Пампорово – 14-16 април 2006. Съдържание. Какво е SQL MODEL клаузата Общи положения Структура на SQL заявка с MODEL и синтаксис на MODEL клаузата, задължителни и опционни клаузи - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 10g SQL MODEL clause

10g SQL MODEL clause

Чекин Калоянов, ТехноЛогика ЕООД[email protected]

BGOUG, Пампорово – 14-16 април 2006

Page 2: 10g SQL MODEL clause

BGOUG – 14-16 април 2006, Пампорово

Съдържание

• Какво е SQL MODEL клаузата

• Общи положения

• Структура на SQL заявка с MODEL и синтаксис на MODEL клаузата, задължителни и опционни клаузи

• Примери – базирани на схема SH

Page 3: 10g SQL MODEL clause

BGOUG – 14-16 април 2006, Пампорово

Какво e SQL MODEL

Електронна таблица в базата данни:

• Резултатът от SQL заявка се преобразува в многомерен масив (един или няколко)

• Към клетките на масива се прилагат формули за изчисляване на нови стойности с възможности за:

Промяна на съществуващите клетки Създаване на нови клетки (колонки) и редове Междуредови изчисления (inter-row calculations), с SQL

функции, включително агрегации като COUNT, MAX, MIN, SUM, AVG

• Връща всички редове или само тези които са променени и новосъздадени

Model е релация, може да се включи във views, insert, update,…

Page 4: 10g SQL MODEL clause

BGOUG – 14-16 април 2006, Пампорово

Какво е SQL MODEL

select from where

MODEL PARTITION BY() DIMENSION BY() MEASURES()

RULES ()

Page 5: 10g SQL MODEL clause

BGOUG – 14-16 април 2006, Пампорово

SQL MODEL понятияmulti-dimensional arrays

COUNTRY YEAR PRODUCT SALES

A 2002 prod1 10

A 2003 prod2 15

B 2004 prod3 56

DIMENSION DIMENSION MEASUREPARTITION

• PARTITION Определя отделни многомерни подмасиви Формулите се прилагат отделно към всеки подмасив

• DIMENSION Идентифицира уникално всеки ред

• MEASURES Клетка от многомерния масив - аналог на measures от fact таблица в една

star схема Идентифицира се уникално чрез всички дименсии Само нейната стойност може да бъде променяна или създавана

Page 6: 10g SQL MODEL clause

BGOUG – 14-16 април 2006, Пампорово

SQL MODEL понятия cell references

• Positional cell reference– използува се при промяна и създаване на нови клетки

sales['China', 'dvd ', 2000]

• Symbolic cell references– използува се само при промяна на съществуващи клетки - включва булеви условия към дименсия(и) <,>, =, in, between ...

sales[prod= 'dvd ', year>1999]

Възможно е рефериране с вмъкнати клетки (nested cells)

sales[ CV(), best_year[ 'Finding Fido', CV(year) ] ]

Page 7: 10g SQL MODEL clause

BGOUG – 14-16 април 2006, Пампорово

SQL MODEL понятия rules

• RULES - формули/правила, прилагани върху клетките на многомерния масив. Всяко правило е присвояване - лявата част указва клетка или набор от клетки, а дясната може да съдържа константи, променливи, отделни клетки или агрегации върху набор от клетки

attnd[ 2006,'BGOUG' ] = attnd[ 2005,'BGOUG' ]*1.10,

attnd[ FOR year IN (2006,2007,2008), 'BGOUG' ] = attnd[ CV(year) - 1, 'BGOUG' ] *1.10

Правилата могат да бъдат зависими едно от друго Могат да използуват wild cards и FOR цикли Може да се укажат брой итерации за изпълнение

Page 8: 10g SQL MODEL clause

BGOUG – 14-16 април 2006, Пампорово

Структура на SQL заявката

with inline view[,inline view,...] select column [,column,...] | SQL Function(column) | user defined function| scalar subquery | user defined aggregate | cursor expression | case expression | analytical functionfrom table [AS OF or VERSIONS] [SAMPLE clause] | view | inline view | external table | table function | cast nested table where <condition> | <join condition>connect bygroup by [ ROLLUP | CUBE | GROUPING SETS] having

MODEL ... order [siblings] by [nulls first|nulls last]

Page 9: 10g SQL MODEL clause

BGOUG – 14-16 април 2006, Пампорово

SQL MODEL пример

SELECT SUBSTR(country,1,20) country, SUBSTR(prod,1,15) prod, year, salesFROM sales_viewWHERE country IN ('Italy','Japan')MODEL RETURN UPDATED ROWS -- връща само променени/създадениPARTITION BY (country) -- за всяка страна DIMENSION BY (prod, year) -- колонки указващи клеткитеMEASURES (sale as sales) -- стойност за изчисляванеRULES ( sales['Bounce', 2002] = sales['Bounce', 2001]

+ sales['Bounce', 2000], sales['Y Box', 2002] = sales['Y Box', 2001], sales['2_Products', 2002] = sales['Bounce', 2002]

+ sales['Y Box', 2002] )ORDER BY country, prod, year

Page 10: 10g SQL MODEL clause

BGOUG – 14-16 април 2006, Пампорово

MODEL клауза - синтаксис

MODEL[IGNORE NAV | [KEEP NAV][UNIQUE DIMENSION | UNIQUE SINGLE REFERENCE][RETURN {ALL|UPDATED} ROWS]

[ REFERENCE <ref-name> ON (<query>)DIMENSION BY (<cols>) MEASURES (<cols>)[IGNORE NAV | KEEP NAV][UNIQUE DIMENSION | UNIQUE SINGLE REFERENCE] ]

[MAIN <main-name>][PARTITION BY (<cols>)]DIMENSION BY (<cols>)MEASURES (<cols>)

[IGNORE NAV | KEEP NAV][UNIQUE DIMENSION | UNIQUE SINGLE REFERENCE]

[RULES][UPSERT | UPDATE][AUTOMATIC ORDER | SEQUENTIAL ORDER][ITERATE (<number>) [UNTIL <condition>]](<rule>, <rule>,.., <rule>)

Page 11: 10g SQL MODEL clause

BGOUG – 14-16 април 2006, Пампорово

SQL MODEL понятияreturn all / updated rows

• RETURN ALL ROWS – връщат се всички редове, променени и непроменени от правилата (default)

• RETURN UPDATED ROWS – връщат се само променени и/или създадени редове

Page 12: 10g SQL MODEL clause

BGOUG – 14-16 април 2006, Пампорово

SQL MODEL понятияupdate & upsert

• Два метода за присвояване на стойности на клетките в MODEL клаузата: UPDATE - присвояването се извършва само за клетки,

присъстващи в многомерния масив. Ако няма такава клетка, не се прави нищо.

UPSERT - присвояването се както върху съществуващи клетки, така и с вмъкване на нови редове, ако не съществуват такива. Важи само за позиционно рефериране отляво и една клетка е реферирана. (default)

Page 13: 10g SQL MODEL clause

BGOUG – 14-16 април 2006, Пампорово

SQL MODEL понятияupdate & upsert - пример

SELECT SUBSTR(country,1,20) country, SUBSTR(prod,1,15) prod, year, salesFROM sales_viewWHERE country='Italy'MODEL RETURN UPDATED ROWSPARTITION BY (country) DIMENSION BY (prod, year)MEASURES (sale as sales)RULES ( sales['Y Box',FOR year FROM 2000 TO 2006 INCREMENT 1] = 100 + max(sales)[prod = 'Y Box', year BETWEEN 1998 AND 2001] )ORDER BY country, prod, year

Page 14: 10g SQL MODEL clause

BGOUG – 14-16 април 2006, Пампорово

SQL MODEL понятияupdate & upsert - пример

SELECT SUBSTR(country,1,20) country, SUBSTR(prod,1,15) prod, year, salesFROM sales_viewWHERE country='Italy'MODEL RETURN UPDATED ROWSPARTITION BY (country) DIMENSION BY (prod, year)MEASURES (sale as sales)RULES UPDATE ( sales['Y Box',FOR year FROM 2000 TO 2006 INCREMENT 1] = 100 + max(sales)[prod = 'Y Box', year BETWEEN 1998 AND 2001] )ORDER BY country, prod, year

Page 15: 10g SQL MODEL clause

BGOUG – 14-16 април 2006, Пампорово

SQL MODEL понятияupdate & upsert - пример

SELECT SUBSTR(country,1,20) country, SUBSTR(prod,1,15) prod, year, salesFROM sales_viewWHERE country='Italy'MODEL RETURN UPDATED ROWSPARTITION BY (country) DIMENSION BY (prod, year)MEASURES (sale as sales)RULES UPDATE ( UPSERT sales['Y Box',FOR year FROM 2000 TO 2006 INCREMENT 1] = 100 + max(sales)[prod = 'Y Box', year BETWEEN 1998 AND 2001] )ORDER BY country, prod, year

Page 16: 10g SQL MODEL clause

BGOUG – 14-16 април 2006, Пампорово

SQL MODEL понятия sequential & automatic order, ordered rules

• Поредност на изпълнение на всички правила RULES SEQUENTIAL ORDER – правилата се изпълняват в

реда в който са зададени (default) RULES AUTOMATIC ORDER - правилата се изпълняват в

реда на тяхната зависимост

• Ordered rules = правила с ORDER BY в лявата част

sales[ANY] ORDER BY year DESC= sales[cv(year)-1]

Необходимо при ANY и при символно рефериране, когато резултатът може да зависи от поредността на достъп до клетките (ORA-32637: self cyclic rule in sequential order MODEL). Изразите в такъв ORDER BY могат да включват константи, measures, dimension стойности, както и опциите [ASC | DESC] [NULLS FIRST | NULLS LAST]

Page 17: 10g SQL MODEL clause

BGOUG – 14-16 април 2006, Пампорово

SQL MODEL понятия ordered rules - пример

SELECT year, salesFROM sales_viewWHERE country='Italy' AND prod='Bounce' MODELDIMENSION BY (year )MEASURES (sale sales) RULES SEQUENTIAL ORDER ( sales[ANY] = sales[CV(year)-1] )ORDER BY year)

Page 18: 10g SQL MODEL clause

BGOUG – 14-16 април 2006, Пампорово

SQL MODEL понятия ordered rules - пример

SELECT year, salesFROM sales_viewWHERE country='Italy' AND prod='Bounce' MODELDIMENSION BY (year )MEASURES (sale sales) RULES AUTOMATIC ORDER ( sales[ANY] = sales[CV(year)-1] )ORDER BY year

Page 19: 10g SQL MODEL clause

BGOUG – 14-16 април 2006, Пампорово

SQL MODEL понятия ordered rules - пример

SELECT year, salesFROM sales_viewWHERE country='Italy' AND prod='Bounce' MODELDIMENSION BY (year )MEASURES (sale sales) RULES SEQUENTIAL ORDER ( sales[ANY] ORDER BY year DESC = sales[CV(year)-1] )ORDER BY year)

Page 20: 10g SQL MODEL clause

BGOUG – 14-16 април 2006, Пампорово

SQL MODEL понятия FOR loop

• FOR цикли върху стойности на дименсия

FOR dimension-value FROM low-value TO high-value INCREMENT|DECREMENT incr-value

[ FOR ] dimension IN (xxx, yyy, zzz)или за всички дименсииFOR (d1,..., dn) IN ((d1_val1,..., dn_val1),..., (d1_valm,..., dn_valm))

FOR dimension IN (subquery)илиFOR (dim1,dim2,dim3) IN (select dim1,dim2,dim3 from some_table)

• FOR конструкцията може да се разглежда като макрос, който от едно правило генерира множество правила с позиционно рефериране, т.е. дава възможност за вмъкване на нови клетки (UPSERT). SQL MODEL има ограничение от 10,000 правила и при FOR циклите трябва да се има предвид

Page 21: 10g SQL MODEL clause

BGOUG – 14-16 април 2006, Пампорово

SQL MODEL понятия FOR loop - пример

SELECT SUBSTR(country,1,20) country, SUBSTR(prod,1,15) prod, year, salesFROM sales_viewWHERE country='Italy'MODEL RETURN UPDATED ROWS PARTITION BY (country) DIMENSION BY (prod, year)MEASURES (sale sales) RULES ( sales['Mouse Pad', FOR year FROM 2005 TO 2010 INCREMENT 1] = 1.2 * sales[cv(prod), 2001] )ORDER BY country, prod, year

Page 22: 10g SQL MODEL clause

BGOUG – 14-16 април 2006, Пампорово

SQL MODEL понятия FOR loop - пример

SELECT SUBSTR(country,1,20) countr, SUBSTR(prod,1,15) prod, year, salesFROM sales_viewWHERE country='Italy'MODEL RETURN UPDATED ROWSPARTITION BY (country) DIMENSION BY (prod, year)MEASURES (sale sales)RULES ( -- създава или променя клетки sales['Home Theatre', FOR year IN (2006,2007,2008)] = 100 + max(sales)[prod like 'Home Theatre%' , year BETWEEN 1998 AND 2002] )ORDER BY country, prod, year

Page 23: 10g SQL MODEL clause

BGOUG – 14-16 април 2006, Пампорово

SQL MODEL понятия FOR loop - пример

SELECT SUBSTR(country,1,20) countr, SUBSTR(prod,1,15) prod, year, salesFROM sales_viewWHERE country='Italy'MODEL RETURN UPDATED ROWSPARTITION BY (country) DIMENSION BY (prod, year)MEASURES (sale sales)RULES ( -- САМО ПРОМЯНА на съществуващи клетки sales['Home Theatre', /*FOR*/ year IN (2006,2007,2008)] = 100 + max(sales)[prod like 'Home Theatre%' , year BETWEEN 1998 AND 2002] )ORDER BY country, prod, year

Page 24: 10g SQL MODEL clause

BGOUG – 14-16 април 2006, Пампорово

SQL MODEL понятия FOR loop - пример

SELECT country, prod, year, sFROM sales_viewMODEL RETURN UPDATED ROWS DIMENSION BY (country, prod, year)MEASURES (sale as s)RULES UPSERT ( s[FOR (country, prod, year) IN (SELECT DISTINCT 'new_country', prod, year FROM sales_view WHERE country = 'China')] = s['China',CV(),CV()] )ORDER BY country, year, prod

/* IN заявката не може да бъде корелирана с външни заявки и трябва да връща < 10000 реда*/

Page 25: 10g SQL MODEL clause

BGOUG – 14-16 април 2006, Пампорово

SQL MODEL понятия CV() фунция и ANY

• CV() = текуща стойност дименсия може да се използува само в дясната страна на

правилата CV() функцията има като аргумент dimension key.

Може да се използува без аргумент, при което се приема позиционно рефериране на клетката.

• ANY = всички стойности на дименсията, включително и NULLs. При символично рефериране се използува IS ANY. Не позволява включването на нови клетки, независимо от типа на рефериране.

Page 26: 10g SQL MODEL clause

BGOUG – 14-16 април 2006, Пампорово

SQL MODEL понятия CV() фунция - пример

SELECT SUBSTR(country,1,20) country, SUBSTR(prod,1,15) prod, year, sales, trunc(growth,2) growthFROM sales_viewWHERE country='Italy'MODEL RETURN UPDATED ROWS PARTITION BY (country) DIMENSION BY (prod, year)MEASURES (sale as sales, 0 growth)RULES ( growth[prod in ('Bounce','Y Box','Mouse Pad') ,year between 1998 and 2000] = 100* (sales[cv(prod), cv(year)] - sales[cv(prod), cv(year) -1] )/sales[cv(prod), cv(year) -1]

)ORDER BY country, prod, year

Page 27: 10g SQL MODEL clause

BGOUG – 14-16 април 2006, Пампорово

SQL MODEL понятия ANY - пример

SELECT SUBSTR(country,1,20) country, SUBSTR(prod,1,15) prod, year, sales, trunc(growth,2) growthFROM sales_viewWHERE country='Italy'MODEL RETURN UPDATED ROWS PARTITION BY (country) DIMENSION BY (prod, year)MEASURES (sale sales, 0 growth)RULES ( growth[prod in ('Bounce','Y Box','Mouse Pad'), ANY] = 100* (sales[cv(prod), cv(year)] - sales[cv(prod),cv(year) -1] ) /sales[cv(prod),cv(year) -1]

)ORDER BY country, prod, year

Page 28: 10g SQL MODEL clause

BGOUG – 14-16 април 2006, Пампорово

SQL MODEL понятия nulls интерпретация

• IGNORE NAV – (Non-Available Values) указва липсващите стойности да се интерпретират като: 0 за цифрови данни Празен стринг за символни данни ’01-JAN-2001’ за дати NULL за други типове данни

• KEEP NAV – интерпретира NULL нормално (default)

Page 29: 10g SQL MODEL clause

BGOUG – 14-16 април 2006, Пампорово

SQL MODEL понятияnulls интерпретация - пример

SELECT SUBSTR(country,1,20) country, SUBSTR(prod,1,15) prod, year, salesFROM sales_viewWHERE country='Italy'MODEL KEEP NAV RETURN UPDATED ROWS PARTITION BY (country) DIMENSION BY (prod, year)MEASURES (sale sales)RULES ( sales['Mouse Pad', 2005] = sales['Mouse Pad', 1999] + sales['Mouse Pad', 2004])ORDER BY country, prod, year

Page 30: 10g SQL MODEL clause

BGOUG – 14-16 април 2006, Пампорово

SQL MODEL понятияnulls интерпретация - пример

SELECT SUBSTR(country,1,20) country, SUBSTR(prod,1,15) prod, year, salesFROM sales_viewWHERE country='Italy'MODEL IGNORE NAV RETURN UPDATED ROWS PARTITION BY (country) DIMENSION BY (prod, year)MEASURES (sale sales)RULES ( sales['Mouse Pad', 2005] = sales['Mouse Pad', 1999] + sales['Mouse Pad', 2004])ORDER BY country, prod, year

Page 31: 10g SQL MODEL clause

BGOUG – 14-16 април 2006, Пампорово

SQL MODEL понятия main & reference models

• MAIN MODEL – върху който се прилагат правилата

• REFERENCE MODEL – един или повече read-only многомерни масиви, които могат да се използват като look-up таблици. Техните колонки се използват само в дясната страна на правилата.

REFERENCE model_name

ON (query)

DIMENSION BY (cols)

MEASURES (cols) [reference options]

Page 32: 10g SQL MODEL clause

BGOUG – 14-16 април 2006, Пампорово

SQL MODEL понятия main & reference models - пример

SELECT SUBSTR(country,1,20) country, year, localsales, dollarsalesFROM sales_viewWHERE country IN ( 'Canada', 'Brazil')GROUP BY country, yearMODEL RETURN UPDATED ROWS REFERENCE conv_refmodel ON (SELECT country, exchange_rate AS er FROM dollar_conv) DIMENSION BY (country) MEASURES (er) IGNORE NAVMAIN main_model DIMENSION BY (country, year)MEASURES (SUM(sale) sales, 0 localsales, 0 dollarsales) IGNORE NAVRULES ( /* нарастване на продажбите в Канада с 22% */ localsales['Canada', 2005] = sales[cv(country), 2001] * 1.22, dollarsales['Canada', 2005] = sales[cv(country), 2001] * 1.22 * conv_refmodel.er['Canada'], /* нарастване на продажбите в Бразилия с 34% */ localsales['Brazil', 2005] = sales[cv(country), 2001] * 1.34, dollarsales['Brazil', 2005] = sales['Brazil', 2001] * 1.34 * er['Brazil'])

Page 33: 10g SQL MODEL clause

BGOUG – 14-16 април 2006, Пампорово

SQL MODEL понятияiterate

• RULES […] ITERATE(n) … - указва брой итерация за изпълнение на правилата

ITERATE (number_of_iterations) [ UNTIL (condition) ]

• number_of_iterations – положителна integer константа

• condition – проверява се в края на поредна итерация

PREVIOUS(cell) - връща стойността на клетката след края на предходната итерация

ITERATION_NUMBER – връща текущия номер на итерацията (започва с 0)

Page 34: 10g SQL MODEL clause

BGOUG – 14-16 април 2006, Пампорово

SQL MODEL понятияiterate - пример

SELECT cell numFROM DUALMODELDIMENSION BY (0 attr)MEASURES (0 cell)RULES ITERATE (7)

( cell[iteration_number] = iteration_number)

Page 35: 10g SQL MODEL clause

BGOUG – 14-16 април 2006, Пампорово

SQL MODEL понятияiterate - пример

SELECT cell num, chr(97+cell) letter, to_char(cell + to_date('14-04-2006','DD-MM-YYYY'),'DAY') day, to_char( (cell+1 + sysdate), 'DD-MM-YYYY') the_dateFROM DUALMODELDIMENSION BY (0 attr)MEASURES (0 cell)RULES ITERATE (7)( cell[iteration_number] = iteration_number)

Page 36: 10g SQL MODEL clause

BGOUG – 14-16 април 2006, Пампорово

SQL MODEL понятияiterate - пример

SELECT trunc(b,2) b, accountFROM ledger MODEL IGNORE NAV DIMENSION BY (account) MEASURES (balance b) RULES ITERATE (100) UNTIL ( ABS( (PREVIOUS(b['Net']) - b['Net']) ) < 0.01 )( b['Net'] = b['Salary'] - b['Interest'] - b['Tax'], b['Tax'] = (b['Salary'] - b['Interest']) * 0.38 + b['Capital_gains'] *0.28, b['Interest'] = b['Net'] * 0.30, b['Iteration Count']= ITERATION_NUMBER + 1)

Page 37: 10g SQL MODEL clause

BGOUG – 14-16 април 2006, Пампорово

SQL MODEL понятияpivoting - пример

SELECT deptno,ename,row_number() OVER ( PARTITION BY deptno ORDER BY sal desc NULLS LAST) rnkFROM empORDER BY deptno, rnk

Page 38: 10g SQL MODEL clause

BGOUG – 14-16 април 2006, Пампорово

SQL MODEL понятияpivoting - пример

SELECT deptno, nr1 , nr2, nr3FROM empMODELRETURN UPDATED ROWSPARTITION BY ( deptno)DIMENSION BY ( row_number() OVER ( PARTITION BY deptno ORDER BY sal desc NULLS LAST) rnk )MEASURES (ename, lpad(' ',10) nr1, lpad(' ',10) nr2, lpad(' ',10) nr3)RULES UPSERT( nr1 [0] = ename [1] , nr2 [0] = ename [2] , nr3 [0] = ename [3])

Page 39: 10g SQL MODEL clause

BGOUG – 14-16 април 2006, Пампорово

SQL MODEL понятияunique references

• UNIQUE DIMENSION – указва, че PARTITION BY и DIMENSION BY колонките в MODEL клаузата трябва да идентифицират уникално всяка клетка в модела. Тази уникалност се проверява в процеса на изпълнение, когато е необходимо, и води до известен overhead. (default)

• UNIQUE SINGLE REFERENCE – указва, че PARTITION BY и DIMENSION BY клаузите идентифицират уникално клетките в дясната страна на правилата. Това може да намали времето за обработка, като изключи проверките по време на изпълнение.

Page 40: 10g SQL MODEL clause

BGOUG – 14-16 април 2006, Пампорово

SQL функции, свързани с MODEL

• CV() - текуща стойност на дименсията PREVIOUS – връща стойността на клетката в началото на итерацията

• ITERATION_NUMBER – връща текущия номер на итерацията в правилата

• PRESENTV (cell, expr1, expr2) - връща expr1, ако клетката съществува, в противен случай връща expr2

• PRESENTNNV (cell, expr1, expr2) - връща expr1, ако клетката съществува и не е NULL , в противен случай връща expr2

Page 41: 10g SQL MODEL clause

BGOUG – 14-16 април 2006, Пампорово

MODEL vs Analytical Functions

• MODEL 10g Calculate Columns using

inter-row calculations (direct cell-reference, max, min, sum, count, etc.)

Update cells Insert rows Suppress untouched rows Use reference models

• Analytical Functions 8.1.6 EE, 9iR2 SE Calculate Columns using

inter-row calculations (lag, lead, first, last, rank, sum, max, min, count, avg,…)

No update of values No creation of rows No suppression of rows - More efficient (performance) Easier syntax

Page 42: 10g SQL MODEL clause

BGOUG – 14-16 април 2006, Пампорово

SQL MODEL – добра или не

• MODEL клаузата ще ви хареса защото: Тя е като нов език, нещата се разглеждат по нов начин Дава достъп до редовете както в масив; Може да манипулирате данните, да генерирате редове и да

добавяте колонки Предоставя рекурсия в SQL Позволява извършване сложни inter-row изчисления

• MODEL клаузата ще ви досажда с ограниченията: Не можете да сложите bind променлива в ITERATE (може да се

заобиколи с добавяне на UNTIL(iteration_number > = :x) ) Сегашният лимит за брой правила е 10,000 При FOR loops не може да използвате корелирани subqueries

Page 43: 10g SQL MODEL clause

BGOUG – 14-16 април 2006, Пампорово

SQL MODEL Документация и публикации

• Първи публикации - 2003 (10gR1)

• Документация 10g Data Warehousing Guide - 22. SQL For Modeling ,

SQL Reference www.oracle.com/technology/obe/obe10gdb/bidw

• Публикации www.oracle.com/technology/oramag technology.amis.nl www.rittman.net www.dbasupport.com/oracle/ora10g

Page 44: 10g SQL MODEL clause

BGOUG – 14-16 април 2006, Пампорово

next