| | |
| Stránka: 1 z 1
| [ Príspevkov: 16 ] | |
Autor | Správa |
---|
Registrovaný: 23.03.08 Prihlásený: 30.01.17 Príspevky: 157 Témy: 30 Bydlisko: Bratislava |
Dobry den,
vytvoril som si funckiu, v ktorej je niekolko podmienok, ak nejaka prejde, vyhodi chybnu hlasku (co je dobre), no a ak vsetky neprejdu, spravi sa mi Insert do databaze. Zial, create prejde bez problemov no pri spusteni mi to hadze chybu na riadok, kde je spominany INSERT. Domnievam sa, ze INSERT nieje mozne pouzit vo fukcii. Je to tak? Ak ano, ako by sa to dalo urobit inak? Ak nie, v com je problem?
Dakujem za kazdu odpoved.
PS: Insert sam o sebe funguje dobre, no len v tej fukcii nejde...
_________________ CPU: AMD Athlon II X2 250, MB: GB MA78LMT-US2H, Grafika: Sapphire Radeon HD 5670 512MB GDDR5, Ram: 2x 2GB Apacer DDR3 1333MHz Golden, HDD: Seagate Barracuda 7200.12 500GB, Tower: CoolerMaster Elite 330 (prieh. bok), Zdroj: Seasonic S12II 380W Bronze, Monitor: ASUS VH196D |
|
Registrovaný: 29.10.08 Prihlásený: 30.07.12 Príspevky: 933 Témy: 2 | Napísal coldak: 13.05.2010 10:47 | |
|
preco by insert nemohol byt vo funkcii ? daj sem ten kod a chybovu hlasku
|
|
Registrovaný: 23.03.08 Prihlásený: 30.01.17 Príspevky: 157 Témy: 30 Bydlisko: Bratislava | Napísal autor témy DevilXXL: 13.05.2010 11:05 | |
|
Kód: CREATE FUNCTION pozicat (xcitatel2 NUMBER,xkniha2 VARCHAR2) RETURN VARCHAR2 IS summ NUMBER := 0; BEGIN -- Podmienky co funguju na 100 percent + sa tam nacita summ nejaka hodnota>0 -- NASLEDUJU DVA RIADKY CO VYHADZUJU CHYBU UPDATE kniha SET ks=summ-1 WHERE kniha.isbn=xkniha2; INSERT INTO pozicanie (xcitatel,isbn,datum) VALUES (xcitatel2,xkniha2,sysdate); RETURN 'Ok.'; END; /
HLASKA:
ORA-14551: cannot perform a DML operation inside a query
ORA-06512: at "USER.POZICAT", line 21
(ten 21. riadok je v originaly )
Cisto ten UPDATE a INSERT unguje spravne, no tuna nejde.
Naposledy upravil DevilXXL dňa 13.05.2010 11:11, celkovo upravené 1
_________________ CPU: AMD Athlon II X2 250, MB: GB MA78LMT-US2H, Grafika: Sapphire Radeon HD 5670 512MB GDDR5, Ram: 2x 2GB Apacer DDR3 1333MHz Golden, HDD: Seagate Barracuda 7200.12 500GB, Tower: CoolerMaster Elite 330 (prieh. bok), Zdroj: Seasonic S12II 380W Bronze, Monitor: ASUS VH196D |
|
Registrovaný: 29.10.08 Prihlásený: 30.07.12 Príspevky: 933 Témy: 2 | Napísal coldak: 13.05.2010 11:10 | |
|
nepouzivas ty nahodou tu funkciu v selecte ?
|
|
Registrovaný: 23.03.08 Prihlásený: 30.01.17 Príspevky: 157 Témy: 30 Bydlisko: Bratislava | Napísal autor témy DevilXXL: 13.05.2010 11:12 | |
|
Ano samozrejme , select pozicat(2,'nieco') from dual;
Ako by si to robil ty? Mna nic ine nenapada...
Inak dakujem, aspon viem, v com je problem, a ak mi ho pomozes vyriesit, budem ti naozaj vdacny...
_________________ CPU: AMD Athlon II X2 250, MB: GB MA78LMT-US2H, Grafika: Sapphire Radeon HD 5670 512MB GDDR5, Ram: 2x 2GB Apacer DDR3 1333MHz Golden, HDD: Seagate Barracuda 7200.12 500GB, Tower: CoolerMaster Elite 330 (prieh. bok), Zdroj: Seasonic S12II 380W Bronze, Monitor: ASUS VH196D |
|
Registrovaný: 29.10.08 Prihlásený: 30.07.12 Príspevky: 933 Témy: 2 | Napísal coldak: 13.05.2010 11:38 | |
|
ten select mas len na otestovanie alebo ho mienis pouzivat v realnej prevadzke ?
|
|
Registrovaný: 23.03.08 Prihlásený: 30.01.17 Príspevky: 157 Témy: 30 Bydlisko: Bratislava | Napísal autor témy DevilXXL: 13.05.2010 11:45 | |
|
v realnej prevadzke, bo neviem, ako to mam inak urobit... (ja robim projekt do skoly)...
Ako sa to teda da inak? Vies o niecom?
_________________ CPU: AMD Athlon II X2 250, MB: GB MA78LMT-US2H, Grafika: Sapphire Radeon HD 5670 512MB GDDR5, Ram: 2x 2GB Apacer DDR3 1333MHz Golden, HDD: Seagate Barracuda 7200.12 500GB, Tower: CoolerMaster Elite 330 (prieh. bok), Zdroj: Seasonic S12II 380W Bronze, Monitor: ASUS VH196D |
|
Registrovaný: 29.10.08 Prihlásený: 30.07.12 Príspevky: 933 Témy: 2 | Napísal coldak: 13.05.2010 11:50 | |
|
no a kde budes pouzivat ten select ? potrebujes sa dotazovat z nejakeho klienta napisaneho v C,delphi,java,php ... ?
|
|
Registrovaný: 23.03.08 Prihlásený: 30.01.17 Príspevky: 157 Témy: 30 Bydlisko: Bratislava | Napísal autor témy DevilXXL: 13.05.2010 11:54 | |
|
no, normlane som pripojeny cez PUTTY, cize klasicky CMD, takze vsetkz prikazy budem priamo pisat do prikazoveho riadku, ma to byt fukcne, cize napisat nejaky jeden select mozme, no nie ze by v nomrlan prevazdke som pisal cely skript fukcie do prikazoveho riadku, sak to by bolo onicom, preto ta fukcia, no a hodi sa mi vyhodit aj nejaky popis, ci vsetko prebehlo uspesne, ale ako tak vidim, nemas pachu co? ...
_________________ CPU: AMD Athlon II X2 250, MB: GB MA78LMT-US2H, Grafika: Sapphire Radeon HD 5670 512MB GDDR5, Ram: 2x 2GB Apacer DDR3 1333MHz Golden, HDD: Seagate Barracuda 7200.12 500GB, Tower: CoolerMaster Elite 330 (prieh. bok), Zdroj: Seasonic S12II 380W Bronze, Monitor: ASUS VH196D |
|
Registrovaný: 29.10.08 Prihlásený: 30.07.12 Príspevky: 933 Témy: 2 | Napísal coldak: 13.05.2010 12:10 | |
|
aha takze pouzivas SQLplus konzolu tak skus :
Kód: set SERVEROUTPUT ON SIZE 20000 begin dbms_output.put_line(pozicat ('citatel','kniha')); end; /
ak by si chcel silou mocou ostat pri ziskavani vysledku cez select from dual tak si nastav vo funkcii autonomous_transaction
|
|
Registrovaný: 23.03.08 Prihlásený: 30.01.17 Príspevky: 157 Témy: 30 Bydlisko: Bratislava | Napísal autor témy DevilXXL: 13.05.2010 12:26 | |
|
Hrooooozne moc dakujem, toto funguje ...
ten autonomous som skusal, no nejde, ale ak to ma ist, mozno robim nejaku chybu, tak prosim este napis ze ako to tam sa ma pridat (Ale inak hroooozne moc velka vdaka , mas u mna strasne velke, no bezcenne plus )
_________________ CPU: AMD Athlon II X2 250, MB: GB MA78LMT-US2H, Grafika: Sapphire Radeon HD 5670 512MB GDDR5, Ram: 2x 2GB Apacer DDR3 1333MHz Golden, HDD: Seagate Barracuda 7200.12 500GB, Tower: CoolerMaster Elite 330 (prieh. bok), Zdroj: Seasonic S12II 380W Bronze, Monitor: ASUS VH196D |
|
Registrovaný: 29.10.08 Prihlásený: 30.07.12 Príspevky: 933 Témy: 2 | Napísal coldak: 13.05.2010 12:37 | |
|
Kód: CREATE or replace FUNCTION pozicat (xcitatel2 NUMBER,xkniha2 VARCHAR2) RETURN VARCHAR2 IS /**************************************/ PRAGMA AUTONOMOUS_TRANSACTION; /**************************************/ summ NUMBER := 0; BEGIN -- Podmienky co funguju na 100 percent + sa tam nacita summ nejaka hodnota>0 -- NASLEDUJU DVA RIADKY CO VYHADZUJU CHYBU UPDATE kniha SET ks=summ-1 WHERE kniha.isbn=xkniha2; INSERT INTO pozicanie (xcitatel,isbn,datum) VALUES (xcitatel2,xkniha2,sysdate); RETURN 'Ok.'; END; /
|
|
Registrovaný: 23.03.08 Prihlásený: 30.01.17 Príspevky: 157 Témy: 30 Bydlisko: Bratislava | Napísal autor témy DevilXXL: 13.05.2010 12:48 | |
|
No, to som uz skusal, prejde to pri ulozeni bez warningov, no pri tom selecte to hadze potom chyby. Ale nevadi, hlavne ze to tvoje funguje ... Este raz vrela vdaka .
_________________ CPU: AMD Athlon II X2 250, MB: GB MA78LMT-US2H, Grafika: Sapphire Radeon HD 5670 512MB GDDR5, Ram: 2x 2GB Apacer DDR3 1333MHz Golden, HDD: Seagate Barracuda 7200.12 500GB, Tower: CoolerMaster Elite 330 (prieh. bok), Zdroj: Seasonic S12II 380W Bronze, Monitor: ASUS VH196D |
|
Registrovaný: 29.10.08 Prihlásený: 30.07.12 Príspevky: 933 Témy: 2 | Napísal coldak: 13.05.2010 12:55 | |
|
nepada ti select na takejto chybe ? ORA-06519: active autonomous transaction detected and rolled back
keby si si zagooglil alebo si dobre precital tu hlasku tak by si vedel ze na konci tej funkcie samozrejme pred returnom musis mat commit alebo rollback , ale asi skorej commit
|
|
Registrovaný: 23.03.08 Prihlásený: 30.01.17 Príspevky: 157 Témy: 30 Bydlisko: Bratislava | Napísal autor témy DevilXXL: 13.05.2010 13:00 | |
|
Pred tym som to skusal no ma teraz napadlo, ze som to zabudol ten COMMIT dat pred KAZDY return, som to dal len pred ten posledny ... Este raz vdaka (clovek sa uci na kazdej chybe )... Strasne si mi pomohol, bo zajtra mam prezentovat projekt ...
_________________ CPU: AMD Athlon II X2 250, MB: GB MA78LMT-US2H, Grafika: Sapphire Radeon HD 5670 512MB GDDR5, Ram: 2x 2GB Apacer DDR3 1333MHz Golden, HDD: Seagate Barracuda 7200.12 500GB, Tower: CoolerMaster Elite 330 (prieh. bok), Zdroj: Seasonic S12II 380W Bronze, Monitor: ASUS VH196D |
|
Registrovaný: 29.10.08 Prihlásený: 30.07.12 Príspevky: 933 Témy: 2 | Napísal coldak: 13.05.2010 13:04 | |
|
pohoda, prajem uspesnu prezentaciu
|
|
| Stránka: 1 z 1
| [ Príspevkov: 16 ] | |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|