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

procedura se izvrsi bez greske, ali ne uradi ono sto treba...

[es] :: Firebird/Interbase :: procedura se izvrsi bez greske, ali ne uradi ono sto treba...

[ Pregleda: 1480 | Odgovora: 12 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Milos D
Beograd

Član broj: 5621
Poruke: 251
*.adsl.static.sezampro.yu.



Profil

icon procedura se izvrsi bez greske, ali ne uradi ono sto treba...28.01.2007. u 14:39

stored procedure:

Code:

begin

  ...

  INSERT INTO A...

  INSERT INTO CALL_DURATION_LOGS (UID,LOGTIME,CALL_DURATION) VALUES ('1234','NOW',11.22);

  INSERT INTO C...

  ...

end


(kod je pojednostavljen)

procedura se izvrsi, nema gresaka, podaci su ubaceni u tabelu A, ubaceni i u tabelu C, ali ne i u tabelu CALL_DURATION_LOGS !

... zbunjen sam...
28.01.2007. u 14:39 

Mr. Rejn
Deki Karamatijević
Srbija.Niš.MedianaCity

Član broj: 2514
Poruke: 390
212.200.223.*



Profil

icon Re: procedura se izvrsi bez greske, ali ne uradi ono sto treba...28.01.2007. u 17:10
Šta ti generiše taj UID, možda neka UDF biblioteka? Ako je tako, testiraj posebno tu f-ju i vidi
da li vraća taj UID kako treba..
Pozdrav.
"I prefer the term:artificial person..."-Bishop the android,Alien 2
28.01.2007. u 17:10 

delalt

Član broj: 68360
Poruke: 197
*.teol.net.



Profil

icon Re: procedura se izvrsi bez greske, ali ne uradi ono sto treba...28.01.2007. u 19:36
Citat:
Milos D: stored procedure:
Code:

  ...
  INSERT INTO CALL_DURATION_LOGS (UID,LOGTIME,CALL_DURATION) VALUES ('1234','NOW',11.22);
  ...

Kojeg ti je tipa kolona LOGTIME?
Ako koristiš DIALECT3, i ako je kolona tipa TIMESTAMP onda probaj ovako:
Code:
INSERT INTO CALL_DURATION_LOGS (UID,LOGTIME,CALL_DURATION) VALUES ('1234',CURRENT_TIMESTAMP,11.22);

a ako je kolona tipa TIME onda:
Code:
INSERT INTO CALL_DURATION_LOGS (UID,LOGTIME,CALL_DURATION) VALUES ('1234',CURRENT_TIME,11.22);
28.01.2007. u 19:36 

Milos D
Beograd

Član broj: 5621
Poruke: 251
212.200.220.*



Profil

icon Re: procedura se izvrsi bez greske, ali ne uradi ono sto treba...31.01.2007. u 15:43
Hvala na odgovorima. Firebird je zaista stabilan i pouzdan, vec dugo ga koristim, ali ovog puta je nesto uspeo da zezne. Nakon sto je odradjen backup/restore procedura je proradila... Pre toga sam svasta probao, ukljucujuci i pravljenje kopije iste te tabele u koju sam hteo da ubacujem podatke, pod drugim imenom, i tada je procedura radila. Pa drop kopije/re-create originala, ali nije vredelo.
31.01.2007. u 15:43 

delalt

Član broj: 68360
Poruke: 197
*.teol.net.



Profil

icon Re: procedura se izvrsi bez greske, ali ne uradi ono sto treba...31.01.2007. u 20:33
Da nisi možda sam to prouzrokovao? Možda si mijenjao proceduru
dok su i drugi bili zakačeni na bazu i radili, ili nešto slično?
Nije loše utvrditi uzrok, da se ne bi ponavljalo.
31.01.2007. u 20:33 

Milos D
Beograd

Član broj: 5621
Poruke: 251
*.adsl-1.sezampro.yu.



Profil

icon Re: procedura se izvrsi bez greske, ali ne uradi ono sto treba...02.02.2007. u 12:47
Pa, mozda gresim, ali mislim da je dozvoljeno menjati stored procedure dok su korisnici aktivni? Bar do sada iz mog iskustva to nije dovodilo do problema.
02.02.2007. u 12:47 

savkic
Igor Savkić

Član broj: 92186
Poruke: 1150
*.adsl.static.sezampro.yu.



Profil

icon Re: procedura se izvrsi bez greske, ali ne uradi ono sto treba...02.02.2007. u 15:50
> Pa, mozda gresim, ali mislim da je dozvoljeno menjati stored procedure dok su korisnici aktivni? Bar do sada iz mog iskustva to nije dovodilo do problema.:;

Dozvoljeno jeste, ali korisnici će nastaviti da rade keširanom (starom) verzijom procedure sve dok se ne zatvori i poslednja konekcija. Metadate izmene je preporučljivo raditi kao ekskluzivan korisnik.
02.02.2007. u 15:50 

Milos D
Beograd

Član broj: 5621
Poruke: 251
*.adsl.sezampro.yu.



Profil

icon Re: procedura se izvrsi bez greske, ali ne uradi ono sto treba...02.02.2007. u 17:16
Znam da korisnici nece videti promene sve dok se ne uloguju sledeci put, to je ok.
02.02.2007. u 17:16 

mbabuskov
Milan Babuskov
Subotica

Član broj: 4718
Poruke: 173
82.131.178.*

ICQ: 112600131
Sajt: home.gna.org/vodovod


Profil

icon Re: procedura se izvrsi bez greske, ali ne uradi ono sto treba...04.02.2007. u 17:40
Citat:
savkic: > Pa, mozda gresim, ali mislim da je dozvoljeno menjati stored procedure dok su korisnici aktivni? Bar do sada iz mog iskustva to nije dovodilo do problema.:;

Dozvoljeno jeste, ali korisnici će nastaviti da rade keširanom (starom) verzijom procedure sve dok se ne zatvori i poslednja konekcija. Metadate izmene je preporučljivo raditi kao ekskluzivan korisnik.


U stvari zavisi sa kojom arhitekturom radis. Ako je Classic, svako vidi staru verziju dok se ne konektuje. Ako je SuperServer, onda je dovoljno zatvoriti sve transakcije bez diskonektovanja. Naravno, ako radis u Delphiju ili necem slicnom gde ti stalno neke komponente drze otvorene transakcije onda ti to i ne vredi puno, ali ako imas npr. web aplikaciju onda nema problema.
04.02.2007. u 17:40 

savkic
Igor Savkić

Član broj: 92186
Poruke: 1150
195.252.107.*



Profil

icon Re: procedura se izvrsi bez greske, ali ne uradi ono sto treba...05.02.2007. u 08:05
> U stvari zavisi sa kojom arhitekturom radis. Ako je Classic, svako vidi staru verziju dok se ne konektuje. Ako
> je SuperServer, onda je dovoljno zatvoriti sve transakcije bez diskonektovanja. Naravno, ako radis u

Da li si siguran, meni je u glavi da se keširanje vrši na nivou konekcije.

> Delphiju ili necem slicnom gde ti stalno neke komponente drze otvorene transakcije onda ti to i ne vredi puno,

Nema komponenti koje će same od sebe to raditi, to zavisi od programera.
05.02.2007. u 08:05 

mbabuskov
Milan Babuskov
Subotica

Član broj: 4718
Poruke: 173
82.131.178.*

ICQ: 112600131
Sajt: home.gna.org/vodovod


Profil

icon Re: procedura se izvrsi bez greske, ali ne uradi ono sto treba...05.02.2007. u 21:13
Citat:
savkic: > U stvari zavisi sa kojom arhitekturom radis. Ako je Classic, svako vidi staru verziju dok se ne konektuje. Ako
> je SuperServer, onda je dovoljno zatvoriti sve transakcije bez diskonektovanja. Naravno, ako radis u

Da li si siguran, meni je u glavi da se keširanje vrši na nivou konekcije.


Classic na nivou konekcije, SuperServer ima shared cache, tj. sve konekcije vide isti metadata. Prakticno kada u jednoj transakciji promenis proceduru, svaka novootvorena transakija ce je videti - cak i ako imas neke druge otvorene transakcije. Uzmi slobodno neki admin. alat pa probaj.

Citat:
savkic: > Delphiju ili necem slicnom gde ti stalno neke komponente drze otvorene transakcije onda ti to i ne vredi puno,

Nema komponenti koje će same od sebe to raditi, to zavisi od programera.


Moguce da sam nesto pobrkao u vezi toga, nisam koristio Delphi vec 4 godine ili tako nesto. Koliko se secam dok je bio BDE i IBO imaju neki svoj cache koji ostaje dok se konekcija ne ugasi. Ali mozda i gresim u vezi toga... Neki Delphi expert ce znati bolje.

05.02.2007. u 21:13 

schild
Dejan Schild
Subotica

Član broj: 59888
Poruke: 82
*.legendww.com.

Sajt: www.topcode.co.yu


Profil

icon Re: procedura se izvrsi bez greske, ali ne uradi ono sto treba...12.02.2007. u 06:50
Negde sam pročitao da ne možeš raditi bezbroj izmena na FB bazi, a da ne uradiš backup/restore. Onda ti se dese ovakve stvari - znači prilikom razvoja, ako puno menjaš strukturu baze, odradi backup/restore s vremena na vreme.

Sad ću možda da lupim, ali mislim da ima neki brojač izmena (verzija), pa kada on dođe do nekog maximuma onda počinju problemi. Prilikom restore se ti brojači resetuju.
12.02.2007. u 06:50 

mbabuskov
Milan Babuskov
Subotica

Član broj: 4718
Poruke: 173
*.subotica.net.

ICQ: 112600131
Sajt: home.gna.org/vodovod


Profil

icon Re: procedura se izvrsi bez greske, ali ne uradi ono sto treba...12.02.2007. u 12:20
Citat:
schild: Negde sam pročitao da ne možeš raditi bezbroj izmena na FB bazi, a da ne uradiš backup/restore. Onda ti se dese ovakve stvari - znači prilikom razvoja, ako puno menjaš strukturu baze, odradi backup/restore s vremena na vreme.

Sad ću možda da lupim, ali mislim da ima neki brojač izmena (verzija), pa kada on dođe do nekog maximuma onda počinju problemi. Prilikom restore se ti brojači resetuju.


Ovo vazi samo za tabele, gde postoji tzv. format i gde baza pamti prethodne formate kolona. Mozda malo da objasnim kako ovo funkcionise: recimo imas kolonu tipa decimal(8,4) i onda je sa ALTER TABLE .. ALTER COLUMN ... promenis da bude decimal(18,4). Posto tabela ima vec neke podatke u sebi koji su do sada cuvani kao 8,4 kada radis sa njima baza radi prevodjenje iz 8.4 u 18.4. Novouneti podaci se cuvaju u formatu 18.4 pa nema konverzije. Dakle, binarna reprezentacija podataka na disku nije ista. Da bi ovo bilo moguce, cuva se tzv. format tj. opis formata kolone u sistemskoj tabeli RDB$FORMATS. Takodje u RDB$RELATIONS postoji polje RDB$FORMAT koje pokazuje trenutni broj izmena te tabele.

E sad, problem je sto je polje koje cuva redni broj formata smallint, a nekad ovo bilo 8 bita kada se pravio prvi Interbase i zato ima ogranicenje od 256 razlicitih formata. Dakle, mozes napraviti maksimalno 255 izmena nad jednom tabelom (svaka ima svoj format) pre nego sto moras uraditi backup/restore. Backup zapisuje sve podatke u tekucem formatu (u primeru koji sam gore naveo decimal(18,4)) tako da nema vise potrebe pamtiti stari format.

12.02.2007. u 12:20 

[es] :: Firebird/Interbase :: procedura se izvrsi bez greske, ali ne uradi ono sto treba...

[ Pregleda: 1480 | Odgovora: 12 ]

Postavi temu Odgovori

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