Keresés

Részletes keresés

Mbazsika Creative Commons License 2007.09.22 0 0 2596
Az alap script minden modositasa utan le kell futtatni a vegleges sql-t gyarto scriptet. Ha a hibakezelesbe kell belenyulni, akkor csak az SQL-t gyarto scriptet kell modositani, es igy legalabb garantalhato, hogy minden utasitasnal megfelelo lesz az exception. Akar egy pre-compiler-kent is felfoghatod :-)
Előzmény: dorog.zultan (2595)
dorog.zultan Creative Commons License 2007.09.22 0 0 2595
igen igen lehetne,
de még a fejlesztés elején vagyunk, ezért sok belenyúlás lesz
a hibakezelésbe.
Akkor meg minden egyes hibakezelést külön kell majd módosítani.
Ha meg a script gyártó scriptet módosítgatom, akkor
az nem lesz elég olvasható sajnos
de az ötlet jó
(ha jól értettelek)

dz
Előzmény: Mbazsika (2594)
Mbazsika Creative Commons License 2007.09.22 0 0 2594
Es egy egyszeru konvertalo script, ami a nyers sql-eket tartalmazo file-t a kivant formara hozza?
Előzmény: dorog.zultan (2593)
dorog.zultan Creative Commons License 2007.09.22 0 0 2593
igen az adatbázis építés kezdeti részén mi is sok triggert, seq-et consr. indexet és sok egyebet generáltunk. Nekem nem az a gondom,
hogy mindenhova egyszer felvegyem a begin blokkokat,
hibakezelést.
Csak majd ha módosítani kell a hibakezelést akkor
megint 100+ helyre kell benyúlni, hogy átvezessem az új dolgokat.

Igaz hogy paraméterként is hívhatnám az sqleket, de az
szerintem az átláthatóságot erősen rontaná.

dz
Előzmény: edesviz (2592)
edesviz Creative Commons License 2007.09.22 0 0 2592
Szia,
az utasításaidtól függ,
de "100" utasítást is teheted egy proci paraméterének, igy van "100" hivásod és egy procid egy begin end blokkal. Azért volt olyan szitu már az életemben, amikor kollégával awk-val generáltunk PL/Sql packegeket-triggereket, táblaszámra.
Édesviz
Előzmény: dorog.zultan (2591)
dorog.zultan Creative Commons License 2007.09.21 0 0 2591
Köszönöm mindenkinek a segítséget.
ezek szerint marad a sok begin blokk...
dz
Előzmény: Pugfan (2590)
Pugfan Creative Commons License 2007.09.21 0 0 2590
sehogy.

A WHENEVER egy sqlplus utasítás, semmi köze a PL/SQL nyelvhez.
Ha ilyesmiket akarsz, lehet hogy jobban járnál
a) egy sqlplus-al futtatott
b) valami már külső programmal futtatott
SQL utasítások sorozatával...
Előzmény: dorog.zultan (2589)
dorog.zultan Creative Commons License 2007.09.21 0 0 2589
köszönöm megnézem.
a WHENEVER SQLERROR CONTINUE nem látom még hogy
job által hívott tárolt eljárásnál
hogyan tudnám használni?

dz
Előzmény: ambr (2588)
ambr Creative Commons License 2007.09.21 0 0 2588
"néhány száz insert, merge" egy tárolt eljárásban???
na mindegy, azért leírom, ami nekem eszembe jutott:
az egyik hogy ha lehetőséged van rá, akkor error_logba íratod a hibát:
egy leírás itt: http://orafaq.com/node/76
vagy
(bár itt tárolt eljárásról van szó) az SQL script esetén van egy
WHENEVER SQLERROR CONTINUE, csak itt logba (spool) tudod iratni a hibát, de a futás megy tovább...

Előzmény: dorog.zultan (2586)
NevemTeve Creative Commons License 2007.09.21 0 0 2587
Esetleg használj egy preprocesszort, amilyen a cpp:

#define ProtExec (dml)
BEGIN
dml;
EXCEPTION WHEN OTHERS END;

ProtExec (INSERT...)
ProtExec (DELETE...)
Előzmény: dorog.zultan (2586)
dorog.zultan Creative Commons License 2007.09.21 0 0 2586
Köszönöm,

igen igaz, jók a begin blokkok
de néhány száz insert, merge esetében
egyenként beletenni a
begin
<sql>
... EXCEPTION
... end
blokkokat
az nem tűnik elegánsnak
Nincs valami olyan dolog
pl mint a resume next
vagy esetleg hibakezeléskor
a hibás sor számát megkapni
és oda hibakezelés után vissza menni
vagy a következővel folytatni?

dz
e_laca Creative Commons License 2007.09.21 0 0 2585
így jár az, aki nem nyomkod állandóan frissítést...
Előzmény: e_laca (2584)
e_laca Creative Commons License 2007.09.21 0 0 2584
Ilyenkor a sql utasítások köré kis beágyazott BEGIN-blokkot szoktam tenni, saját EXCEPTION-résszel. Az nem jó?
Előzmény: dorog.zultan (2581)
edesviz Creative Commons License 2007.09.21 0 0 2583

Szia,

tedd az utasitást, begin end blokkba, és hasznélj exception-t.

Édesviz

Előzmény: dorog.zultan (2581)
NevemTeve Creative Commons License 2007.09.21 0 0 2582
végtelenül elegáns a megoldás:

begin
 insert
exception when others then ...
 
end;

begin
...
Előzmény: dorog.zultan (2581)
dorog.zultan Creative Commons License 2007.09.21 0 0 2581
Sziasztok!

Lenne egy kérdésem:
Hibakezelés után szeretném a következő sorral
folytatni a tárolt eljárás végrehajtását.
Pl ha sok insert, merge -t tartalmazó
tárolt eljárás valamelyik sql-je
hibát okoz a hibaüzenetet el tudjam tenni egy táblába,
de ne álljon meg a végrehajtás
hanem menjen a következő sql utasításra.
(MS Accessben volt ilyen "resume next" néven)

(cimkéket goto-t nem igazán szeretnék használni.
loop blokkokba tenni is problémás lenne.)

Tud valaki valami elegánsabb megoldást?

Köszönöm:
dz.
NagyOkos Creative Commons License 2007.09.18 0 0 2580
Ez nem mindig megy. Nekem VPN-en keresztül lehal a csatorna, ha sokáig nincs mozgás, így az eljárás is lehal, ha hosszan fut. Ezért én is dzsobozok.
Előzmény: crockl (2568)
tnsnames.ora Creative Commons License 2007.09.18 0 0 2579
A dbms_job-nak van még egy nagyon kellemes lehetősége, a 'mesterséges' párhuzamosítás. Egy alapvetően nem párhuzamosított tárolt eljárás esetén, ha lehetséges "diszjunktosítani" a futást, akkor több példánya is indulhat a tárolt eljárásnak. Rengetegszer működni tudó hasznos dolog, adott esetben meglepően jó performanciával, legalábbis saját tapasztalataim szerint.
Előzmény: Athos78 (2578)
Athos78 Creative Commons License 2007.09.18 0 0 2578
Köszi tnsnames.ora a segítséget. Maradok ennél a megoldásnál. Áttanulmányozom az oldalakat.
Előzmény: tnsnames.ora (2571)
edesviz Creative Commons License 2007.09.18 0 0 2577

Szia,

szigoruan őrzött, belső szerverről beszélek.

Édesviz

Előzmény: tnsnames.ora (2576)
tnsnames.ora Creative Commons License 2007.09.17 0 0 2576
Ha innen nézzük igazad van. De azért ez tud nagy ugrás lenni adott cégnél, még ma is.
Előzmény: edesviz (2575)
edesviz Creative Commons License 2007.09.17 0 0 2575
Szia,
csomagold be weblapba, meg egy két gombba, meg néhány sciptbe. Milyen cég ahol nincs webszerver?
Édesviz
Előzmény: tnsnames.ora (2574)
tnsnames.ora Creative Commons License 2007.09.17 0 0 2574
Bocs előbb ment el a hozzászólás mint szerettem volna,
Az sqlplusos indítás meg üzemszerű körülmények között lehet gázos. Én mint üzemeltető nembiztos, hogy szeretném.

BTW: A kérdező valszeg azt szeretné, hogy felületről egy gombnyomásra indítana tárolt eljárást a felhasználó, majd mondjuk kávészünet után egy másik gombnyomásra logokat nézne. És ez a felhasználó adott esetben lehet ő maga is, de lehet, egy hölgy is az üzemeltető csapatból is. Mindezt úgy, hogy lehető legkevesebb potenciális galiba legyen a feldolgozás során. De lehet, hogy túlságosan vad a fantáziám...
Előzmény: edesviz (2572)
tnsnames.ora Creative Commons License 2007.09.17 0 0 2573
Hát egy Powerbuildert én se szeretnék két példányban indítani, Windowson, pláne nem túl sok memóriával felszerelt gépen.
Előzmény: edesviz (2572)
edesviz Creative Commons License 2007.09.17 0 0 2572

Szia,

nem értelek, nem tudod kétpéldányban elindítani a fejlesztő eszközödet, vagy a háttérben egy sqlplus-t. Édesviz

Előzmény: Athos78 (2569)
tnsnames.ora Creative Commons License 2007.09.17 0 0 2571
Szerintem a dbms_job a te barátod; pláne, hogy érdemes a problémával Oracle-szinten maradni, és nem brékelni oprendszeres ficsörökkel.

Három link a témában (ezek más problémáknál is hasznos webhelyek)
http://www.psoug.org/reference/dbms_job.html (Lehetőségek, egyéb infók)
http://www.dba-oracle.com/tips_oracle_dbms_job.htm (Példák)
http://orafaq.com/node/871 (Next-date-s package-okosság)

Ami érdekes lehet még:
- Interval paraméter legyen null, ha egyszer akarod csak futtatni
- Érdemes lehet két lépésben csinálni a témát. Job-ot kreálni akár saját job_id-vel majd runnal kézzel indítani a jobot, így tuti elindul és a lehető legkorábban.
- Minden infót le tudsz kérdezni, mi hogyan merre indult, hol tart. Így együtt azért már elég kell legyen a legszőrősebb szívű fejlesztőnek is :o). /Ezért is jó cucc a dbms_job, szvsz/
Előzmény: Athos78 (2569)
NevemTeve Creative Commons License 2007.09.17 0 0 2570
Nincs a SUBMIT-nak olyan opciója, hogy azonnal elinduljon?
Előzmény: Athos78 (2569)
Athos78 Creative Commons License 2007.09.17 0 0 2569
Szóval. Vannak a job-ok, amikkel be tudok időzíteni egy tárolt eljárás futását. A fejlesztő eszköz amivel dolgozok, abban, ha egy tároltat hívok, akkor addig amíg le nem fut a fejlesztő eszköz nem kapja vissza a vezérlést és lényegében olyan, mintha lefagyott volna. Ezt a job-bal meg tudnám oldani, de nekem az időzítésre nincs szükség. Gondoltam van egyszerűbb megoldás. Elindítom, visszakapom a vezérlést, majd x óra múlva megnézem az eredményt.
crockl Creative Commons License 2007.09.11 0 0 2568
miert nem inditod 1 kulon szalon hatterbe akkor abbol a programbol amit gondolom irsz?
Előzmény: Athos78 (2565)
tnsnames.ora Creative Commons License 2007.09.10 0 0 2567
>Úgy szeretnék egy tárolt eljárást elindítani, hogy az elindítást követően nem várnám meg míg lefut
Én nem értem a kérdést... :o(
- Mi a baj Job-bal?
- Milyen "egyszerűbb" megoldást szeretnél?
- Időzítetten szeretnéd indítani?
- Tárolt eljárásból szeretnél tárolt eljárást indítani?
Előzmény: Athos78 (2565)

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!