U principu, moze, ako si volja da pises jos proceduru za to, inace ja ne znam neki drugi nacin, na koji bi mogao da to uradis najjednostavnije. Ja bih to ovako uradio, bar dok ne saznam za nesto kasvetno.
U bazi imas objekat USER_SOURCE:
SQL> desc user_source;
Name Null? Type
----------------------------------------- -------- ----------------------------
NAME VARCHAR2(30)
TYPE VARCHAR2(12)
LINE NUMBER
TEXT VARCHAR2(4000)
E, sada ovako. Kolona NAME je ime procedure ili funkcije, TYPE je tip objekta, tako da mozes da vidis da li je to : FUNCTION, TRIGGER, PROCEDURE ili PACKAGE. Kolona LINE pokazuje liniju objekta. I na kraju, za tebe, najbitnija kolona TEXT. U koloni TEXT se smesta source kod objekta, tako da na pocetku mozes da vidis prvih 4000 karaktera istog.
Ono sto bih ja uradio je sledece. Napravio bih funkciju kojoj bi prosledjivao kao parametar ime objekta a ona bi mi vracala bas ono sto trebi treba (imena kolona). U toj funkciji ti bi radio neki ovakav select:
SELECT text
INTO source_kod
FROM user_source
WHERE name=UPPER('ime_procedure');
onda bi u promenljivoj
kod imao najnoviju verziju koda tvoje procedure ili funkcije. Znas da se na pocetku koda definisu ulazni parametri tako da treba sada da precesljas ovaj niz karaktera i da pronadjes ono sto trazis. To nece da bude jednostavno ali to je jedino resenje koje sada vidim. (E sada sto bi Sofronije u crtacu rekao:"Tvoj pevac sestro, ja sam ga doveo a ti sa sad sama sredjuj!" Tako sam ti rekao gde mozes da nadjes ono sto trazis a ti ga sad sam odatle izvuci).
Tu ces da imas dosta problema. Ovo mozes da primenjujes kada su u pitanju samo funkcije ili procedure. Ako su procedure i funkcije u paketu to vec dodatno komplikuje realizaciju ovako neceg.
Podatke iz funkcije mozes da vratis kao objekat, odnosno kao dvodimenzionalni niz stringova, (prvi ce da bude redni broj parametra a drugi kolona ako postoji) jer se ne zna koliko parametara ima taj objekat. Dalje, treba da znas da se u USER_SOURCE vidi samo objekte kod onog korisnika koji je logovan, odnosno vide se samo oni objekti koje je on kreirao (sve dok se ne ulogujes kao SYSDBA).
To ti je moje vidjenje resenja, pa ako ti je to toliko bitno...
Citat:
Primer:imam proceduru u kojoj je ulazna variabla naziv kolone iz neke tabele (software_id in varchar2).Sada bih treabao selektirati podatke iz te kolone (software_id),medjutim ne znam u kojoj tabeli je ta kolona.
Postoji li mogucnost da idem pretrazivanje jednu po jednu tabelu i da trazim u kojoj se nalazi kolona (software_id).
Postoji, ali sta ako software_id ima u dve, tri tabele.
Citat:
PS:Imam jednu tabelu u kojoj su smesteni nazivi svih tabela u bazi.
Ovo vec postoji u bazi, ali ako hoces da imas i ti svoju tabelu, tvoja stvar.
Pozdrav
[Ovu poruku je menjao Raspucin dana 09.02.2005. u 21:14 GMT+1]