DB Aplikace - Oracle

Každý neuvedený předmět
Uživatelský avatar
Eubie
Matfyz(ák|ačka) level III
Příspěvky: 295
Registrován: 8. 10. 2005 15:35
Typ studia: Informatika Bc.
Kontaktovat uživatele:

DB Aplikace - Oracle

Příspěvek od Eubie »

Ahoj,

následující kód mi nechce Oracle sežrat a já už fakt nevím, proč. Proto se obracím s prosbou na někoho, kdo by věděl, jak to vyřešit:

Kód: Vybrat vše

CREATE OR REPLACE PACKAGE pckg_zmen_test AS
 procedure XXXX(xid udrzbar.id%type, xjmeno udrzbar.jmeno%type,xprijemni udrzbar.prijmeni%type);
END;

CREATE OR REPLACE PACKAGE BODY pckg_zmen_test AS
 procedure XXXX(xid udrzbar.id%type, xjmeno udrzbar.jmeno%type,xprijmeni udrzbar.prijmeni%type) 
 as
 begin
  update udrzbar set jmeno = xjmeno, prijmeni = xprijmeni where id=xid;
 end;
 END; -- pckg_zmen_test
/
Chyba, kterou Oracle hlásí je:
SQL> show err;
Chyby v PACKAGE BODY PCKG_ZMEN_TEST:

LINE/COL ERROR
-------- -----------------------------------------------------------------
2/12 PLS-00323: podprogram nebo kurzor 'XXXX' je deklarován ve
specifikaci balíku a musí být definován v tìle balíku
tj. odkazuje na řádek, kde je proceduře XXXX dáno její tělo.
Díky
Uživatelský avatar
rastik
Supermatfyz(ák|ačka)
Příspěvky: 661
Registrován: 19. 10. 2005 21:45
Typ studia: Informatika Mgr.
Bydliště: Praha
Kontaktovat uživatele:

Příspěvek od rastik »

Nechyba Ti po prvom CREATE este lomitko?
Uživatelský avatar
Eubie
Matfyz(ák|ačka) level III
Příspěvky: 295
Registrován: 8. 10. 2005 15:35
Typ studia: Informatika Bc.
Kontaktovat uživatele:

Příspěvek od Eubie »

Nene, já to dávám jako dvě dávky, nejdřív samostatně deklaraci a pak samostatně tělo, jen se mi nechtělo to sem dávat jako dvě citace kódu.
Keleen
Matfyz(ák|ačka) level II
Příspěvky: 90
Registrován: 19. 1. 2005 22:20

Příspěvek od Keleen »

Ja si myslim, ze kdyz definujes telo baliku, mel bys pouzivat IS a nikoliv AS..tedy:

Kód: Vybrat vše

CREATE OR REPLACE PACKAGE BODY pckg_zmen_test AS
 procedure XXXX(xid udrzbar.id%type, xjmeno udrzbar.jmeno%type,xprijmeni udrzbar.prijmeni%type)
 is
 begin
  update udrzbar set jmeno = xjmeno, prijmeni = xprijmeni where id=xid;
 end;
 END; -- pckg_zmen_test
/
Ale jestli to je tim nebo jeste necim jinym, to nevim;).[/code]
Uživatelský avatar
Eubie
Matfyz(ák|ačka) level III
Příspěvky: 295
Registrován: 8. 10. 2005 15:35
Typ studia: Informatika Bc.
Kontaktovat uživatele:

Příspěvek od Eubie »

Bohužel, ani IS namísto AS nepomohlo. Nám na cvičeních David Hoksza říkal, že jsou obě klíčový slova ekvivalentní.
Uživatelský avatar
Angel
Matfyz(ák|ačka) level III
Příspěvky: 121
Registrován: 9. 9. 2005 19:28
Typ studia: Informatika Mgr.
Bydliště: Znojmo / Praha
Kontaktovat uživatele:

Příspěvek od Angel »

Me se to normalne vytvorilo. Kazdopadne sem musel orezat parametry na numeric (pac nemam danou tabulku) a zmenit ten dotaz v tele na neco jinyho.

Nejak tam taky zadnou chybu nevidim.
Uživatelský avatar
Eubie
Matfyz(ák|ačka) level III
Příspěvky: 295
Registrován: 8. 10. 2005 15:35
Typ studia: Informatika Bc.
Kontaktovat uživatele:

Příspěvek od Eubie »

Pak pro jistotu příkladám kód, kterej tvoří tu tabulku:

Kód: Vybrat vše

---------------------------------------
--TABULKA udrzbar (jsou zde ulozeni udrzbari nasi pujcovny, kteri se staraji o nami pujcovane naradi )
---------------------------------------
CREATE TABLE udrzbar (
id NUMBER NOT NULL,
jmeno VARCHAR2(40) NOT NULL,
prijmeni VARCHAR2(40) NOT NULL,
--
CONSTRAINT PK_udrzbar_id PRIMARY KEY (id)
);
Uživatelský avatar
rastik
Supermatfyz(ák|ačka)
Příspěvky: 661
Registrován: 19. 10. 2005 21:45
Typ studia: Informatika Mgr.
Bydliště: Praha
Kontaktovat uživatele:

Re: DB Aplikace - Oracle

Příspěvek od rastik »

Eubie píše:

Kód: Vybrat vše

XXXX(xid udrzbar.id%type, xjmeno udrzbar.jmeno%type,xprijemni udrzbar.prijmeni%type)
XXXX(xid udrzbar.id%type, xjmeno udrzbar.jmeno%type,xprijmeni udrzbar.prijmeni%type)
                                                    ^^^^^^^^^
Mas tam preklep v mene posledneho parametru :twisted:
Uživatelský avatar
Tuetschek
Supermatfyz(ák|ačka)
Příspěvky: 657
Registrován: 15. 6. 2005 13:54
Typ studia: Nestuduji ale učím na MFF
Kontaktovat uživatele:

Příspěvek od Tuetschek »

Teda drsny ... je videt ze Oracle dokaze vzdycky presne rict kde je chyba ... bohuzel me tohle urcite ceka taky :(.
Plug 'n' Pray.
Uživatelský avatar
Eubie
Matfyz(ák|ačka) level III
Příspěvky: 295
Registrován: 8. 10. 2005 15:35
Typ studia: Informatika Bc.
Kontaktovat uživatele:

Příspěvek od Eubie »

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA...
(omlouvam se). :evil: :evil: :evil: :!:
Děkuju rastiku. Demence Oraclího syntax checkeru je zřejmě nekonečná. Budiž toto, prosím, odstrašující případ pro všechny.

...

v tom případě nechápu, jak ten kód někomu mohl projít:)
Naposledy upravil(a) Eubie dne 6. 2. 2007 13:39, celkem upraveno 1 x.
Uživatelský avatar
rastik
Supermatfyz(ák|ačka)
Příspěvky: 661
Registrován: 19. 10. 2005 21:45
Typ studia: Informatika Mgr.
Bydliště: Praha
Kontaktovat uživatele:

Příspěvek od rastik »

Eubie píše:Demente Oraclího syntax checkeru je zřejmě nekonečná. Budiž toto, prosím, odstrašující případ pro všechny.
Toz to sa musim Oracle DB zastat (predsa len ma zivi uz mnoho rokov :twisted: ), urobil presne to co mal. V specifikacii mal jednu public proceduru a v tele nasiel inu private. Takze ta private je ok, ale tu public nenasiel.
Uživatelský avatar
Eubie
Matfyz(ák|ačka) level III
Příspěvky: 295
Registrován: 8. 10. 2005 15:35
Typ studia: Informatika Bc.
Kontaktovat uživatele:

Příspěvek od Eubie »

rastik píše:
Eubie píše:Demente Oraclího syntax checkeru je zřejmě nekonečná. Budiž toto, prosím, odstrašující případ pro všechny.
Toz to sa musim Oracle DB zastat (predsa len ma zivi uz mnoho rokov :twisted: ), urobil presne to co mal. V specifikacii mal jednu public proceduru a v tele nasiel inu private. Takze ta private je ok, ale tu public nenasiel.
Jo, to je pravda, neřekl nepravdu. Zároveň ale mohl říct "Někde tam máte chybu" ( zápornej extrém ) a nebo "Ačkoliv se jména procedur shodují, neshodují se jejich parametry" ( kladnej extrém, na kterej jsem zvyklej např. s VS a díky kterýmu by bylo hledání chyby na pět vteřin a ne na dvoje vyteklý nervy ).
Odpovědět

Zpět na „Ostatní“