Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 5 odgovora
  • 3.263 pregleda

Najnovija ↓

Parametrizovani view 18.07.2006. u 08:24 · pre 247 meseci #1
Ne mogu u 9I da napravim view sa parametrom. Cini mi se da je u nekim ranijim verzijama Oracle-a to moglo. Ima li neko iskustva sa tim ?
Re: Parametrizovani view 18.07.2006. u 08:59 · pre 247 meseci #2
Nije moglo nikada, ali postoji nacin da napravis nesto slicno.
Treba da napravis sistemski kontekst i da ga ukljucis u view.

Na primer:

create or replace context kontekst using podesi_kontekst
/
create or replace function podesi_kontekst(prom1 number,prom2 varchar2) as
begin
dbms_session.set_context( 'kontekst','prom1',to_char(prom1));
dbms_session.set_context('kontekst','prom2',prom2);
end;
/

create or replace view pom as
select * from tabela
where
prom1=to_number(sys_context('kontekst','prom1'))
and prom2=sys_context('kontekst','prom2')
/

Pre nego sto pozoves upit nad viewom pozoves podesi_kontakt.

Re: Parametrizovani view 20.07.2006. u 12:30 · pre 246 meseci #4
Moze li se na neki nacin videti spisak postojecih konteksta ? U Entrerprise manageru ih ne vidim, a u dictionary-ju postoji tabela ALL_CONTEXT, ali ona daje samo aktivne kontekste.
Re: Parametrizovani view 10.08.2006. u 01:07 · pre 246 meseci #6
Upravo i ja masovno koristim parametrizovane poglede (parametrised views), a uskoro bih trebao slican princip koristiti i za Virtual Private Database u Oracleu.

Pri programiranju i testiranju performansi doticnih parametrizovanih pogleda (parametrised views; btw. ima li neko dobar prevod za ovo? :) ), otkrio sam da je veoma brze koristiti "inline SELECT query from dual", nego direktan poziv rutine sys_context, tako da bi prethodni primjer trebao izgledati ovako:
Code:
create or replace view pom as
select * from tabela
where
prom1= (select to_number(sys_context('kontekst','prom1')) from dual)
and prom2= (select sys_context('kontekst','prom2') from dual);

Jos nisam stigao potraziti i detaljno procitati neku literaturu u vezi internog funkcionisanja rutine sys_context, tako da ne mogu konkretno objasniti zasto je inline query from dual brzi, nego direktni poziv... Pretpostavljam da je zbog parsovanja, ali nisam siguran...
Potpis
Blog - baze podataka
---------------------
Oracle OCP DBA (9i & 10g)
Oracle Database: SQL Certified Expert
Oracle OCP Developer
Certified MySQL DBA
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme