Mam dużą kwerendę z zagnieżdżaniem i łączeniem w lewo i Ineed, aby utworzyć widok z niego, tak aby nie uruchamiać go z aplikacji. Problem polega na tym, że potrzebuję zakresu dat i innych pól jako parametrów wejściowych, ponieważ będzie on różnił się od interfejsu dla każdego żądania. Właśnie podniosłem wzrok i zobaczyłem kilka postów odnoszących się do użycia SYS_CONTEXT do sparametryzowanych widoków i muszę dokładnie wiedzieć, jak utworzyć widok na przykład z 2 parametrami - fromdate, todate
i jak wywołuję widok z aplikacji.tworzenie sparametryzowanych widoków w oracle11g
Tylko dla informacji używam grails/groovy do rozwijania aplikacji. i tutaj jest kwerenda Chcę utworzyć widok z ..
select
d.dateInRange as dateval,
eventdesc,
nvl(td.dist_ucnt, 0) as dist_ucnt
from (
select
to_date(fromdate,'dd-mon-yyyy') + rownum - 1 as dateInRange
from all_objects
where rownum <= to_date(fromdate,'dd-mon-yyyy') - to_date(todate,'dd-mon-yyyy') + 1
) d
left join (
select
to_char(user_transaction.transdate,'dd-mon-yyyy') as currentdate,
count(distinct(grauser_id)) as dist_ucnt,
eventdesc
from
gratransaction, user_transaction
where gratransaction.id = user_transaction.trans_id and
user_transaction.transdate between to_date(fromdate,'dd-mon-yyyy') and to_date(todate,'dd-mon-yyyy')
group by to_char(user_transaction.transdate, 'dd-mon-yyyy'), eventdesc
) td on td.currentdate = d.dateInRange order by d.dateInRange asc
nie możemy używać procedur funkcji, ale chciałbym zajrzeć do opcji i wypróbować proponowane tutaj rozwiązania –
* Dlaczego * nie możesz użyć procedur, funkcji lub pakiety? Jeśli korzystasz z Oracle, nie ma powodu, aby ich unikać. –
Niektóre osoby mają dostęp tylko do odczytu do baz danych. –