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

globalna varijabla

[es] :: Oracle :: globalna varijabla

[ Pregleda: 2768 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Fidelito_Castro
Fidelito_Castro
Subotica

Član broj: 143557
Poruke: 87
*.dynamic.sbb.rs.



Profil

icon globalna varijabla11.03.2012. u 18:38 - pre 146 meseci
Imam problema sa pristupom globalnoj promenljivoj u koju treba da smestim vrednost PK relacije.

Globalnu promenljivu sam kreirao u paketu putem komande:
Code:
CREATE OR REPLACE PACKAGE usluge_package IS sifA VARCHAR2(10) END;


Medjutim kada pokusam da pristupim u definiciji trigera toj promenljivoj SQL developer mi izbacuje error.

Definicija trigera:
Code:

CREATE OR REPLACE
TRIGGER AktuelnaCena
BEFORE INSERT OR UPDATE OR DELETE ON Usluge
FOR EACH ROW
BEGIN 
   IF (INSERTING OR UPDATING )
   THEN
         BEGIN usluge_package.sifa := :NEW.SifraA; END;
   ELSE
        BEGIN usluge_package.sifa  := :OLD.SifraA; END;
  END IF;
END;


Da li neko ima ideju kako da pristupim globalnoj promenljivoj?
 
Odgovor na temu

darkosos
Darko Šoš
Beograd

Član broj: 5053
Poruke: 1131
*.ptt.rs.



+64 Profil

icon Re: globalna varijabla12.03.2012. u 07:14 - pre 146 meseci
Hm, moram priznati da ovo nisam video do sad... Nisam siguran da lokalno definisana promenljiva u paketu moze da se koristi van paketa?
Ako si u formsu, koristi :global. Ako ne, koristi tabelu ili eventualno temporary tabelu ako ti tako treba...
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: globalna varijabla12.03.2012. u 07:56 - pre 146 meseci
Kakv je to manir, da se samo kaže da se pojavljuje greška, a ne daje se koja je greška u pitanju? Ako tebi ne znači ništa ORA-nnnnn ne znači da je drugima to nebitan podatak.

Evo, recimo, iz aviona se vidi da ti u paketu fali znak ";" posle deklaracije varijable, ali ne mogu da pretpostavim da li si stavio pravi paket, ili nešto što si napisao ad hoc.
 
Odgovor na temu

Fidelito_Castro
Fidelito_Castro
Subotica

Član broj: 143557
Poruke: 87
*.dynamic.sbb.rs.



Profil

icon Re: globalna varijabla12.03.2012. u 17:31 - pre 146 meseci
Kada pokusam da kompajliram trigger , sql developer mi izbacuje sledecu gresku:
Code:

Error(8,16): PLS-00905: object MARKO.USLUGE_PACKAGE is invalid

Da definitivno mi je falila ; posle deklaracije varijable.Sad cu da probam da vidim da li funkcionise...
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: globalna varijabla12.03.2012. u 17:34 - pre 146 meseci
Pa već sam ti napisao. Ovo nije ispravno

CREATE OR REPLACE PACKAGE usluge_package IS sifA VARCHAR2(10) END;

Treba


CREATE OR REPLACE PACKAGE usluge_package IS sifA VARCHAR2(10); END;
 
Odgovor na temu

Fidelito_Castro
Fidelito_Castro
Subotica

Član broj: 143557
Poruke: 87
*.dynamic.sbb.rs.



Profil

icon Re: globalna varijabla12.03.2012. u 17:50 - pre 146 meseci
djoka_l hvala na pomoci, sada sve funkcionise...
Pozdrav!
 
Odgovor na temu

darkosos
Darko Šoš
Beograd

Član broj: 5053
Poruke: 1131
95.180.54.*



+64 Profil

icon Re: globalna varijabla12.03.2012. u 18:34 - pre 146 meseci
Iznenadjen sam da to radi :) bez obzira na prethodnu sintaksnu gresku... Zasto bi neko zeleo da koristi globalnu promenljivu paketa kao globalnu promenljivu aplikacije?
Kako to uopste funkcionise? Ako se posle ove intervencije pozove paket, da li ta promenljiva ima tu tako dodeljenu vrednost?
 
Odgovor na temu

Fidelito_Castro
Fidelito_Castro
Subotica

Član broj: 143557
Poruke: 87
*.dynamic.sbb.rs.



Profil

icon Re: globalna varijabla12.03.2012. u 19:10 - pre 146 meseci
Pa ja sam kreirao globalnu promenljivu paketa, da bih u njoj sacuvao vrednost jer moram da je provucem kroz 2 trigera i zato mi treba.
Doduse mozda postoji i neki drugi nacin ali ja ne znam koji.
A posle ispravljanja ove sintaksne greske sve lepo radi, toj promenljivoj se dodeljuje ta vrednost i bez problema se ta vrednost cita...
 
Odgovor na temu

darkosos
Darko Šoš
Beograd

Član broj: 5053
Poruke: 1131
95.180.54.*



+64 Profil

icon Re: globalna varijabla12.03.2012. u 19:48 - pre 146 meseci
Hm, ali tu globalnu promenljivu moze da promeni i sam poziv npr neke procedure iz paketa, zar ne?
Ili na primer dva konkurentna okidanja tog trigera koji dodeljuje vrednost... Pricam sad napamet, ne znam kakvo ti je okruzenje, ali nesto mislim da nije dobro drzati takav global u paketu; posebno ako to koristis kroz triger, koji se odnosi na jedan slog u tabeli, a tom globalu imaju svi pristup...
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: globalna varijabla12.03.2012. u 21:47 - pre 146 meseci
Darko, sve varijable koje su deklarisane u specifikaciji paketa su dostupne bilo kojoj proceduri ili trigeru iste sesije i to je potpuno uobičajen način korišćenja globalnih promenljivih jedne sesije. Ono što nije dobro je to što nije predviđen nikakav mehanizam da se obezbedi da svaka promena te globalne varijable bude obrađena.
Zadatak je vrlo loše odrađen, cela zamisao je loša, i kao što si primetio, u slučaju da se jednom INSERT, UPDATE ili DELETE naredbom modifikuje više slogova tabele Usluge, dovešće do toga da samo poslednja vrednost šifre bude na raspolaganju nekom drugom trigeru.
 
Odgovor na temu

darkosos
Darko Šoš
Beograd

Član broj: 5053
Poruke: 1131
95.180.54.*



+64 Profil

icon Re: globalna varijabla12.03.2012. u 22:06 - pre 146 meseci
Da, to je to sto me je "brinulo" kod ovakvog pristupa. Malo sam prelistao po netu, Toma i Burlesona, i vidim da je uobicajeno... Ali i dalje mi se nesto ne svidja :)
Mislim, video sam sad primere koji koriste ovakve globale uglavnom da se ubrza cesto citanje istih slogova u sesiji; to bi u stvari bile konstante, i to mi je vec ok.
I sto rece, osim ako ne obezbedis da se prate uzastopne promene, moze dovesti do mnogo zabune.
U jednom zivom sistemu koristiti ovo za razmenu informacija izmedju pojedinih delova aplikacije mi se ne cini primerenim. Mozda za neko setovanje stanja, konstante i tome slicno...
 
Odgovor na temu

Fidelito_Castro
Fidelito_Castro
Subotica

Član broj: 143557
Poruke: 87
*.dynamic.sbb.rs.



Profil

icon Re: globalna varijabla13.03.2012. u 19:38 - pre 146 meseci
Da ne otvaram novu temu, evo da postavim triger i proceduru koje ne mogu da kompajliram
Code:

CREATE OR REPLACE TRIGGER  PozivUkupanIznos
AFTER INSERT OR UPDATE OR DELETE ON StavkaIzvestaja
DECLARE
   vrednost VARCHAR2(10):= StavkaIzvestaja_package.BrProtokola;
BEGIN
  UkupanIznos(vrednost);
END;

error koji se prikazuje prilikom kompajliranja je
Code:

Error(6,3): PLS-00905: object MARKO.UKUPANIZNOS is invalid

Dok se za proceduru
Code:

create or replace
PROCEDURE  UkupanIznos (BrAmbProtokola IN VARCHAR2)
AS
suma IzvestajLekaraSpecijaliste.Ukupno%TYPE;
BEGIN suma :=0;
SELECT SUM(cena * kolicina) INTO suma
FROM StavkaIzvestaja
WHERE BrAmbulantnogProtokola=BrAmbProtokola;
UPDATE IzvestajLekaraSpecijaliste
SET Ukupno = suma
WHERE BrAmbulantnogProtokola = BrAmbProtokola;


prikazuje sledeci error
Code:

Error(11,46): PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following:     begin case declare end exception exit for goto if loop mod    null pragma raise return select update while with    <an identifier> <a double-quoted delimited-identifier>    <a bind variable> << close current delete fetch lock insert    open rollback savepoint set sql execute commit forall merge    pipe 


Zamolio bih vas za pomoc, pretpostavljam da je neka sitna sintaksna greska u pitanju...

Problem resen...
 
Odgovor na temu

darkosos
Darko Šoš
Beograd

Član broj: 5053
Poruke: 1131
95.180.54.*



+64 Profil

icon Re: globalna varijabla13.03.2012. u 19:57 - pre 146 meseci
Pa mi ti i ne trebamo :) a izgleda da ti je falio END... A greska PLS-00103: Encountered the symbol "end-of-file" ti skoro uvek znaci upravo to. Pa sad, ako nastavis da se bavis ovim, steci ces vec osecaj...
 
Odgovor na temu

Fidelito_Castro
Fidelito_Castro
Subotica

Član broj: 143557
Poruke: 87
*.dynamic.sbb.rs.



Profil

icon Re: globalna varijabla14.03.2012. u 16:17 - pre 146 meseci
Pa dobro polako, jeste bas tako falilo mi je na kraju END;
Ujedno sve je lepo sql developer ispisao, ali nema ko da cita :)
 
Odgovor na temu

[es] :: Oracle :: globalna varijabla

[ Pregleda: 2768 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

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