Keresés

Részletes keresés

NevemTeve Creative Commons License 2007.05.16 0 0 2314
Attól is függ, hogy milyen programozási nyelvben vagyunk... én Pro*C-re gondoltam, te pedig PL/SQL-re (azt hiszem).
Előzmény: dorog.zultan (2311)
IzsákTamás Creative Commons License 2007.05.16 0 0 2313
Oracle Develop konferencia Prága!

Június 21-én prágai állomására érkezik a kifejezetten fejlesztőknek szóló 2 napos konferencia, az Oracle Develop: The Premier Conference for Developers. Korai regisztráció május 21-ig, valamint az első 30 magyar regisztráló között 2 ingyen éjszaka kerül kisorsolásra! További információ a konferencia honlapján.
Remélem találkozunk!

Az idei nyár Oracle konferenciáiról olvashatnak a weblogomon.

Izsák Tamás
http://www.apexblog.hu
dorog.zultan Creative Commons License 2007.05.16 0 0 2312
Így (kettőspont nélkül) megette:
...
RETURNING ID INTO logID;
...

Köszönöm a segítséget!
dz
Előzmény: dorog.zultan (2311)
dorog.zultan Creative Commons License 2007.05.16 0 0 2311
ezt az üzenetet kapom

logID number(32);
begin
...
INSERT ...
RETURNING ID INTO :logID;
...



Error: PLS-00049: bad bind variable 'LOGID'
Line: 43
Text: RETURNING ID INTO :logID;
Előzmény: NevemTeve (2309)
halaloszto Creative Commons License 2007.05.16 0 0 2310
meg ugye a log tablaba execute immediate-val kell irni, kulonben a log iras resze lesz a tranzakcionak, es ha rollback van, akkor a logok is eltunnek.

vajk
Előzmény: dorog.zultan (2308)
NevemTeve Creative Commons License 2007.05.16 0 0 2309
Akkor így írhatod:

INSERT INTO log_tbl
  (futkezddt, futvegdt)
VALUES
  (sysdate, null)
RETURNING id INTO :id;
Előzmény: dorog.zultan (2308)
dorog.zultan Creative Commons License 2007.05.16 0 0 2308
Szia, köszönöm kipróbálom.

Egyébként DATE tipusban tárolom az időpontokat...
...
( to_date(sysdate, 'YYYY-MM-DD HH24:MI:SS'), '' );
...

köszönöm
dz
Előzmény: NevemTeve (2307)
NevemTeve Creative Commons License 2007.05.16 0 0 2307
long id;

EXEC SQL INSERT INTO log_tbl
...
RETURNING ID INTO :id;

(Megjegyzés: Talán szerencsésebb lenne az időpontokat DATE típusban tárolni.)

Előzmény: dorog.zultan (2306)
dorog.zultan Creative Commons License 2007.05.16 0 0 2306
Sziasztok
Van egy log táblám (ID, FUTKEZDDT, FUTVEGDT ),
amibe a tranzakció kezdetekor felveszek egy rekordot
INSERT INTO log_tbl
( FUTKEZDDT, FUTVEGDT )
values
( to_date(sysdate, 'YYYY-MM-DD HH24:MI:SS'), '' );

Aztán mikor lefutott
bele kellene írni a vége dátumot is.

Hogy tudom meg, milyen id-t kapott?
-------------------------------------------------
(az ID-t before insert trigger teszi bele)

(A kezdő adatok mem. változóba írása nem igazán jó,
mert ha vmiért nem fut le a tranz. akkor nem marad a log táblában nyoma)

köszönöm
dz
lsarecz Creative Commons License 2007.05.15 0 0 2305
Oracle konferencia fejlesztőknek!
Június 21-22-én Prágában Oracle Develop konferencia lesz. Az első 30 magyar regisztráló között 2 ingyen éjszaka kerül kisorsolásra! Bővebb infók a konferencia honlapján.
További Oracle konferenciákról infó található az első magyar Oracle Apex blogon.
Lajos
tnsnames.ora Creative Commons License 2007.05.15 0 0 2304
>Adattárházas szakembereket keresek....
http://forum.index.hu/Article/viewArticle?a=66380110&t=1001339
http://forum.index.hu/Article/viewArticle?a=66384263&t=1001339
http://forum.index.hu/Article/viewArticle?a=67293410&t=1001339

Csak ismételni tudom magam: Wow! Sőt a négyzeten! :o)
Előzmény: gollnhoferpeter (2303)
gollnhoferpeter Creative Commons License 2007.05.15 0 0 2303
Adattárházas szakembereket keresek futó és induló projektjeinkhez, több pozícióra. Részleteket www.cpconsulting.hu címen találhattok.
crockl Creative Commons License 2007.05.10 0 0 2302
a mysql-es felsorolas az mysql specifikus megoldas. Oracle-be is meg mashol is fel kell sorold. Persze ezt leginkabb bind-olt valtozokkal szokas :)
Előzmény: attika1975 (2301)
attika1975 Creative Commons License 2007.05.10 0 0 2301
Még egy kérdésem lenne, hogyantudok több sort beszúrni egymás után. Mysql insert into blalala (oszlopnevek) VALUES (blabal) és vesszővel elválsaztva be tudom rakni a sorokat. Oracle alatt minden egyes insert nél meg kell ismételni a parancsot. vagy lehetséges a 'mysql-es' felsorolás is?
attika1975 Creative Commons License 2007.05.10 0 0 2300
Egyébként elég érdekes,hogy debian 4.0 magyar nyelven van telepítve,de angol beállításokkal települ, nls táblákhoz sys felhasználóval ninsc hozzáférés (legalábbis nem tudom megváltoztatni alter sessionnal). Windows alatt minden okés.
edesviz Creative Commons License 2007.05.09 0 0 2299
Szia,
kezdd el alter session-nal.
Édesviz
Előzmény: attika1975 (2298)
attika1975 Creative Commons License 2007.05.09 0 0 2298
Szaiasztok! Az NLS beállításokat hogyan tudom megváltoztatni jelen pillanatban: NLS_LANGUAGE american teritory america date language america stb Köszönöm
KingFishR Creative Commons License 2007.05.08 0 0 2297
Akkor is invalid lesz, ha simán szelektálok a táblából, szóval csak az kell, hogy az oracle számára nyilvánvaló legyen a függőség.
A TAR-t egyébként nem találtam.

Ez a hozzáállás, hogy automatikusan újrafordul úgyis a következő hívásnál, nagyon jó, csak néhány bajom van vele:
- honnan a szöszből tudom, hogy az adatbázisomban csak olyan invalidok vannak, amik lehetnének validok is - nem szeretem a felhasználótól megtudni, hogy valami baj van...
- bizonyos csillagállásnál nem fogja lefordítani a kódot, hanem hibát jelez, hogy nem tudja futtatni (sajnos erre a csillagállásra még nem jöttem rá, hogy mikor is van, de jött már elő olyankor is, amikor én utána simán lefordítottam a procedúrát)

Az bíztató, hogy 10g-ben jobb lesz a helyzet - kár, hogy ezévben még nem állunk át :(
Amúgy igaz, hogy sokat javultunk. 8i-ben ha hozzáadtál egy partíciót, az is invalidálta a proc-okat (legalábbis, ha volt global index is), mostmeg nem :)

A truncate egész jó ötlet, csak nem mi írjuk az alkalmazást, de most fogják kicsit átirogatni, akár bele is kerülhet.

Előzmény: tnsnames.ora (2288)
KingFishR Creative Commons License 2007.05.08 0 0 2296
Már régóta csináljuk így, automatikus újrafordigatással, csak egyre hosszabb ideig tart. Persze a delete egy nem partícionált táblán hosszabb lenne - meg sokat kéne move-olgatni.

Egy invaliddá vált procedúra simán továbbfut. Csak pl. visszahívni már nem tudja magát (meg más sem tudja hívni), mert először az Oracle implicite le akarja fordítani, ami nem megy neki, mert ugyebár fut. Na erre ítéletnapig képes várni az oracle (4 órát biztos :) hogy hátha befejezi a futását végre a procedúra.
Explicit fordításkor ha jól emlékszem, 300 másodperc múlva a recompile hibára fut, ha nem tudja zárolni a procedúrát magának - márpedig ha fut, akkor nem tudja.
Ráadásul újrafordítás után, azon sessionökben, ahol korábban már futtatták, a procedúra legközelebbi meghívásakor kapsz egy "object's state is modified" (vagy ilyesmi) hibát. Az ezután következő hívásnál ugyanebből a sessionből viszont szépen lefut!

Valóban "kicsit" problémás a dolog a motor oldaláról, de engem ettől még zavar :)
Belegondolva, nem is tudom, hogy megy-e a drop partition, ha éppen select fut a táblára. Ha nem megy, akkor egyátalán nem értem, hogy minek invalidál. Ha megy, akkor triviális - elég nehéz kitalálni, hogy éppen kersztbe teszel-e a futó selectnek.
Előzmény: tnsnames.ora (2287)
Mbazsika Creative Commons License 2007.05.08 0 0 2295
Select Count(*) From sys.dba_tab_columns Where OWNER = semanev And TABLE_NAME = tablanev And COLUMN_NAME = mezonev
Előzmény: Robin-Hood (2294)
Robin-Hood Creative Commons License 2007.05.08 0 0 2294
Üdv!

Nem találtam sehol olyan parnacsot, amivel le tudnám kérdezni, hogy egy táblában létezik-e az adott oszlop. Nagyon sok táblán kell lefuttatni vmit, de csak amiben egy adott mező megtalálható. Köszönöm.
Mbazsika Creative Commons License 2007.05.08 0 0 2293
Mindenki egyszer beleszalad a problémába.

Tobbszor... nagyobb verzio valtasonkent :-) 7.3 - 10R2
Előzmény: tnsnames.ora (2292)
tnsnames.ora Creative Commons License 2007.05.08 0 0 2292
>Mar regen tul vagyunk rajta
Mint Pista bácsi a kupiban, mint a közismert vicc mondja... :o))))

Na ja... Na de egy újszülöttnek minden vicc új. Mindenki egyszer beleszalad a problémába. Legalábbis addig, míg a probléma létezése fennáll. ;)
Előzmény: Mbazsika (2291)
Mbazsika Creative Commons License 2007.05.08 0 0 2291
Egyébként ez érdekes téma, jó játék. :o)

Mar regen tul vagyunk rajta, az elso feladatok kozott volt annak idejen. Mondjuk erdekes, hogy a tobbi, altalunk hasznalt adatbaziskezelo automatikusan megoldja ezt a kerdest, csak az Oracle-es verziohoz kellett megirnunk.
Előzmény: tnsnames.ora (2290)
tnsnames.ora Creative Commons License 2007.05.07 0 0 2290
>A legszebb az, amikor az invalidda valt objektumok kozott is van fuggoseg, es nem mindegy, hogy milyen sorrendben validalod...
Ja-ja. Épp ezért erre a célra van a dba_dependencies (+order by). Vagy a brute force (isméltelten kellő számban végrehajtott fordítási ciklus kísérlet -> mindaddig legalábbis, amíg legalább egy objektum sikeresen fordul le) Egyébként ez érdekes téma, jó játék. :o)
Előzmény: Mbazsika (2289)
Mbazsika Creative Commons License 2007.05.07 0 0 2289
A legszebb az, amikor az invalidda valt objektumok kozott is van fuggoseg, es nem mindegy, hogy milyen sorrendben validalod...
Előzmény: tnsnames.ora (2288)
tnsnames.ora Creative Commons License 2007.05.07 0 0 2288
"Package becomes INVALID when a partiiton is dropped"
http://www.freelists.org/archives/oracle-l/06-2005/msg01247.html

A fenti link szerint, azért válik invaliddá egyes tárolt eljárások, mert nem varchar2(2), hanem t1.col%type-ként deklaráltál. Az előbbi esetben nincs invaliddá válás.

Kiegészítés1: külön történet az automatikus recompilálás. Ilyen kódot pár sorban nagyon könnyű írni. (És drop partition után futtatni). És aztán karosszékben kényelmesen hátradőlve azon merengeni, helyes-e az oracle Corp részéről ilyesmivel fárasztani a szegény usereket... ;) Másik lehetőség, ahogy mondják is: szétválasztani a drop partition témát az application témától.

Kiegészítés2: valaki nyitott TAR-t a témában a metalinken. Azt meglehet érdemes lenne megnézni (ha van élő supportod)


"Compile procedure automatically -- how to avoid cascading invalidations"
http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:286816015990

"yes, that'll invalidate the package since the package is dependent on the TABLE (not the partitions therein) and the table has been structurally modified to a degree that necessitates recompilation."

"incremental refinements happens all of the time in Oracle - there are fewer invalidations in 10g than there were in 9i than there were in 8i than there were......."


"Invalid Objects"
http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:637156098168

"if you truncate the partitions instead of dropping them - it will not become invalidated (if you can save them up for a safe time to drop)"

Előzmény: tnsnames.ora (2287)
tnsnames.ora Creative Commons License 2007.05.07 0 0 2287
>Van valakinek valami használható ötlete arra, hogy a függőség ne invalidáljon drop partition-ál? /9i2-őt használok/

Na azért szerintem óvatosabban az ilyen igényekkel... ;)

- First lookra megalapozottnak tűnik annak felvetése, hogy partició eldobáskor miért válik invalidussá az alattvaló objektumok. Valszeg azért, mert bonyolult művelet a drop partition (indexek azonnal mennek a levesbe, garmadányi data dictionary view stb.). És azért el lehet képzelni némi fantáziával, hogy van olyan pillanat, amikor _nem_ selectálható a folyamat során a tábla (és DDL-probléma miatt, nem DML-tranzakció probléma miatt!). De ez maradjon nyitott kérdésnek a továbbiakra.

- Nem mindegy, hogy view avagy store procedure válik invalidussá. De ezt most nem ragozom tovább, egyébként könnyen belátható.

- BTW.: Az első kézenfekvő ötlet: dinamikus sql használata a tárolt eljárásban. Ne nevessen senki: ez szerintem nem olyan hülyeség, ha egy eljárás több instance-ban érintett, és fel-le kapcsolgatják az instance-okat az üzemeltetés során. Az más kérdés, hogy ökölszabálynak ('mindent dinamikus sql-be!') én sem mondanám ki.

- Ha 8i-ben tennéd fel a kérdést, az némileg érdekesebb lenne. De ott is van megoldás (egy igen kevéssé dokumentált view): sys.order_object_by_dependency. Kombinálva /join formájában/ mondjuk a dba_objects-cel már lekérdezhető lenne a neked szükséges infó. Drop partition elött, of course.

- 9i-ben már van: dba_dependencies. Type-ok is korrektek már benne.

- Nem akarok hülyeséget mondani, de invaliddá vált procedure mintha nem nagyon futkorászhatna tovább szerintem az RDBMS-ben.
Előzmény: KingFishR (2286)
KingFishR Creative Commons License 2007.05.07 0 0 2286
Sziasztok!
Némi kényelmetlenséget okoz nekem az objektumok közti függőség: ha idő szerint partícionált táblákból régi partíciót eldobálok, minden ezt használó eljárás/view invalid lesz, aztán fordigathatom újra bőszen a fél adatbázist. Ami nem is olyan egyszerű, ha pl. fut egy frissen invalidált procedúra.
Van valakinek valami használható ötlete arra, hogy a függőség ne invalidáljon drop partition-ál?
Tudom, hogy az oracle által látott függőséget meg lehet szüntetni az "execute immediate" sűrű használatával (persze view-ra ez sem megoldás). De magával a függőség létezésével nincs bajom, mert segít az adatbázis egységét fenntartani (legalább tudom, hogy kinek mi kell, hogy működjön).
9i2-őt használok
Köszi az ötleteket :)
tnsnames.ora Creative Commons License 2007.05.07 0 0 2285
Hát ha systemként be tudsz lépni, akkor tárgytalan amit feszegettem... ;) És igen kell adni grant jog on objektum to magadnak
Előzmény: attika1975 (2284)

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