Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 16 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
[SQL] Oracle - vnoreny INSERT vo Fukcii

Registrovaný: 23.03.08
Prihlásený: 30.01.17
Príspevky: 157
Témy: 30
Bydlisko: Bratislava
Príspevok NapísalOffline : 13.05.2010 9:41

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
Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 29.10.08
Prihlásený: 30.07.12
Príspevky: 933
Témy: 2
Príspevok NapísalOffline : 13.05.2010 10:47

preco by insert nemohol byt vo funkcii ? daj sem ten kod a chybovu hlasku


Offline

Užívateľ
Užívateľ
[SQL] Oracle - vnoreny INSERT vo Fukcii

Registrovaný: 23.03.08
Prihlásený: 30.01.17
Príspevky: 157
Témy: 30
Bydlisko: Bratislava
Príspevok Napísal autor témyOffline : 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
Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 29.10.08
Prihlásený: 30.07.12
Príspevky: 933
Témy: 2
Príspevok NapísalOffline : 13.05.2010 11:10

nepouzivas ty nahodou tu funkciu v selecte ?


Offline

Užívateľ
Užívateľ
[SQL] Oracle - vnoreny INSERT vo Fukcii

Registrovaný: 23.03.08
Prihlásený: 30.01.17
Príspevky: 157
Témy: 30
Bydlisko: Bratislava
Príspevok Napísal autor témyOffline : 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
Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 29.10.08
Prihlásený: 30.07.12
Príspevky: 933
Témy: 2
Príspevok NapísalOffline : 13.05.2010 11:38

ten select mas len na otestovanie alebo ho mienis pouzivat v realnej prevadzke ?


Offline

Užívateľ
Užívateľ
[SQL] Oracle - vnoreny INSERT vo Fukcii

Registrovaný: 23.03.08
Prihlásený: 30.01.17
Príspevky: 157
Témy: 30
Bydlisko: Bratislava
Príspevok Napísal autor témyOffline : 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
Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 29.10.08
Prihlásený: 30.07.12
Príspevky: 933
Témy: 2
Príspevok NapísalOffline : 13.05.2010 11:50

no a kde budes pouzivat ten select ? potrebujes sa dotazovat z nejakeho klienta napisaneho v C,delphi,java,php ... ?


Offline

Užívateľ
Užívateľ
[SQL] Oracle - vnoreny INSERT vo Fukcii

Registrovaný: 23.03.08
Prihlásený: 30.01.17
Príspevky: 157
Témy: 30
Bydlisko: Bratislava
Príspevok Napísal autor témyOffline : 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? :D...







_________________
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
Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 29.10.08
Prihlásený: 30.07.12
Príspevky: 933
Témy: 2
Príspevok NapísalOffline : 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 :)


Offline

Užívateľ
Užívateľ
[SQL] Oracle - vnoreny INSERT vo Fukcii

Registrovaný: 23.03.08
Prihlásený: 30.01.17
Príspevky: 157
Témy: 30
Bydlisko: Bratislava
Príspevok Napísal autor témyOffline : 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 :D)







_________________
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
Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 29.10.08
Prihlásený: 30.07.12
Príspevky: 933
Témy: 2
Príspevok NapísalOffline : 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;
/



Offline

Užívateľ
Užívateľ
[SQL] Oracle - vnoreny INSERT vo Fukcii

Registrovaný: 23.03.08
Prihlásený: 30.01.17
Príspevky: 157
Témy: 30
Bydlisko: Bratislava
Príspevok Napísal autor témyOffline : 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
Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 29.10.08
Prihlásený: 30.07.12
Príspevky: 933
Témy: 2
Príspevok NapísalOffline : 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 :)


Offline

Užívateľ
Užívateľ
[SQL] Oracle - vnoreny INSERT vo Fukcii

Registrovaný: 23.03.08
Prihlásený: 30.01.17
Príspevky: 157
Témy: 30
Bydlisko: Bratislava
Príspevok Napísal autor témyOffline : 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 :D... Este raz vdaka (clovek sa uci na kazdej chybe ;))... Strasne si mi pomohol, bo zajtra mam prezentovat projekt :D...







_________________
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
Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 29.10.08
Prihlásený: 30.07.12
Príspevky: 933
Témy: 2
Príspevok NapísalOffline : 13.05.2010 13:04

pohoda, prajem uspesnu prezentaciu :)


Odpovedať na tému [ Príspevkov: 16 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. SQL INSERT INTO SELECT

v Databázy

1

472

18.10.2015 15:48

BX Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. oracle sql agregacne funkcie group by

v Databázy

1

464

10.05.2016 7:49

BX Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Senior PL/SQL Oracle vývojár (BA)

v Ponuka práce

0

515

11.05.2012 17:11

Vasinova Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. K:Oracle programovani v PL/SQL

v Kúpim

0

234

22.02.2021 23:27

Trty Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. traverse tree in SQL (najlepsie ORACLE <11g>)

v Databázy

0

324

24.10.2012 18:05

masterpeter Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. mnohonásobný insert

v PHP, ASP

2

454

26.04.2010 2:39

Feko Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Insert ID

v Databázy

4

698

21.06.2009 11:26

neopagan Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. INSERT INTO

v PHP, ASP

15

1139

01.06.2009 17:15

Draex Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Linked list - insert

v Assembler, C, C++, Pascal, Java

6

551

25.05.2012 10:18

Fico Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Veľky insert - problem

v Databázy

8

706

06.05.2009 14:54

Hue Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. TinyMCE Insert Link - otazka

v Ostatné

1

507

09.06.2010 14:24

Revolution Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Insert correct SIM card

v Mobilné zariadenia

4

1036

15.12.2009 21:45

dom34 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. vynechanie tabulky pri INSERT INTO

v PHP, ASP

5

538

02.03.2008 21:56

max-m Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. oracle

v Databázy

0

612

04.03.2010 23:05

bimbo34 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. php + oracle

v PHP, ASP

0

445

22.01.2009 23:05

awtt Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Oracle knihy

v Databázy

0

780

06.03.2010 17:12

dEVIANT Zobrazenie posledných príspevkov


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

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra