Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Oracle tabela.........

[es] :: Oracle :: Oracle tabela.........

[ Pregleda: 3273 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Ninobos
BS

Član broj: 44692
Poruke: 49
*.customer.m-online.net.



Profil

icon Oracle tabela.........02.02.2005. u 12:52 - pre 233 meseci
Pozdrav

u oracle tabeli ALL_ARGUMENTS postoji izmedju ostalih kolona ARGUMENT_NAME iz koje selektujem ulazne variable iz neke procedure koja se nalazi u nekom paketu.
Npr. ADRNR,ASPNR,.....
U nekom paketu postoji neka procedura npr.
PROCEDURE UPD(ADRNR in sw.dokument.adresse_id%type,
ASPNR in sw.dokument.person_id%type,.......

E sada, da li postoji neka tabela iz koje mogu videti iz koje tabele tj. kolone variabla ADRNR uzima podatak u ovom slucaju tabele DOKUMENT i kolone ADRESSE_ID?


nn
 
Odgovor na temu

Raspucin

Moderator
Član broj: 20699
Poruke: 216
*.medianis.net.

ICQ: 244452581


+3 Profil

icon Re: Oracle tabela.........02.02.2005. u 20:14 - pre 233 meseci
Citat:

U nekom paketu postoji neka procedura npr.
PROCEDURE UPD(ADRNR in sw.dokument.adresse_id%type,
ASPNR in sw.dokument.person_id%type,.......


Ovde ti je samo naveden tip podatka koji se koristi kao ulazni parametar procedure, znaci, da je to samo ulazni tip i Oracle ga prevodi u taj tip kada ga kompajlira. Znaci ako je sw.dokument.adresse_id tipa VARCHAR2(20), onda je identicno da li si napisao,

PROCEDURE UPD(ADRNR in VARCHAR2(20),
ASPNR in sw.dokument.person_id%type,.......

ili

PROCEDURE UPD(ADRNR in sw.dokument.adresse_id%type,
ASPNR in sw.dokument.person_id%type,.......

za Oracle je to isto i on to ne pamti, tako da ne mozes da vidis koja se kolona i iz koje tabela koristi kao ulazni parametar, jer ti tu samo deklarises tip ulaznog parametra.

Pozdrav
 
Odgovor na temu

Ninobos
BS

Član broj: 44692
Poruke: 49
*.customer.m-online.net.



Profil

icon Re: Oracle tabela.........08.02.2005. u 08:08 - pre 233 meseci
Hvala na odgovoru sa zakasnjenjem
To je ok,medjutim da li postoji nacin da selektujem kolone iz neke tabele.
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).
PS:Imam jednu tabelu u kojoj su smesteni nazivi svih tabela u bazi.

pozdrav
nn
 
Odgovor na temu

Raspucin

Moderator
Član broj: 20699
Poruke: 216
*.3.EUnet.yu.

ICQ: 244452581


+3 Profil

icon Re: Oracle tabela.........08.02.2005. u 19:52 - pre 233 meseci
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]
 
Odgovor na temu

Ninobos
BS

Član broj: 44692
Poruke: 49
*.customer.m-online.net.



Profil

icon Re: Oracle tabela.........09.02.2005. u 08:51 - pre 233 meseci
Sve procedure se nalaze u paketima.
Drugo,kako da selektujem iz tabele USER_SOURCE objekte drugog usera.

Citat:
Imam jednu tabelu u kojoj su smesteni nazivi svih tabela u bazi.

To je inace moja tabela.U njoj se nalaze svi moji objekti.

Citat:
Postoji, ali sta ako software_id ima u dve, tri tabele.

Kolona software_id se nalazi u vise tabela,moze ali i ne mora.

Znaci,izmedju ostalih ulaznih parametara jedne procedure koja se nalazi u paketu postoje (npr.SOFTWARE_ID) koji je number tipa (svaki parametar sa _ID).
Ovo mi sve treba da bih testirao sve procedure u bazi.Da bi je testirao moram upisati odredene vrednosti umesto ulaznih parametara.Za parametre tipa SOFTWARE_ID ne mogu izmisljati vrednost nego je moram selektovati iz odredene tabele u kojoj se nalazi ta kolona SOFTWARE_ID.
Eh tu je problem.Kako pronaci u kojoj se tabeli nalazi kolona SOFTWARE_ID iz koje bi trebao selektovati ,npr.
SELECT MIN(SOFTWARE_ID)
INTO :POM
FROM nadjena_tabela;
I onda taj POM postavim u proceduru.

Imam jednu svoju tabelu u kojoj se nalazi imena svih kreiranih tabela i njihovi vlasnici.
Znaci,iz ove tabele mogu da selektujem jednu po jednu tabelu, ali kako sada da u toj selektiranoj tabeli precesljam kolone i vidim da se izmedju ostalih nalazi i ta moja koju trazim SOFTWARE_ID ili ne postoji.

nn
 
Odgovor na temu

Raspucin

Moderator
Član broj: 20699
Poruke: 216
*.rcub.bg.ac.yu.

ICQ: 244452581


+3 Profil

icon Re: Oracle tabela.........09.02.2005. u 10:46 - pre 233 meseci
Jesi li gledao temu: Testiranje (automatski) postojecih paketa (procedura) u Oracle bazi!

Tu je covek lepo napisao i dao link gde mozes da nadjes pomoc oko testiranja procedura u bazi.

Citat:
Drugo,kako da selektujem iz tabele USER_SOURCE objekte drugog usera.


Ovo sam vec odgovorio.

Ako ti je samo SOFTWARE_ID problem, onda lepo ucitaj deklaraciju paketa u neku promenljivu u pretrazuj gde se sve pojavi SOFTWARE_ID. Lako mozes da vidis kojoj proceduri ili funkciji pripada, tamo gde je deklarisan, po kljucnim recima (FUNCTION, PROCEDURE).

Ne vidim sta ti je problem.
 
Odgovor na temu

[es] :: Oracle :: Oracle tabela.........

[ Pregleda: 3273 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.