[ _owl_ @ 09.12.2004. 14:13 ] @
Kada iz Jave preko CallableStatement.setBoolean() pozovem PL/SQL proceduru kojoj treba da prosledim parametar tipa boolean dobijam sledecu gresku:
Code:

java.sql.SQLException: ORA-06550: line 1, column 13:
PLS-00306: wrong number or types of arguments in call to 'INSERT_KANDIDAT'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

java.lang.Exception
        at KandidatDB.insert(KandidatDB.java:28)
        at TestKandidatDB.main(TestKandidatDB.java:12)
Press any key to continue . . .

Pomenuta funkcija je definisana kao:
Code:

FUNCTION INSERT_KANDIDAT(p_jmbg IN kandidat.jmbg%TYPE, p_ime IN kandidat.ime%TYPE, p_prezime IN kandidat.prezime%TYPE, p_sifra_skole IN kandidat.sifra_skole%TYPE, p_oslobodjen IN BOOLEAN, p_svedocanstva IN lista_svedocanstva) RETURN NUMBER;

Kada iz koda i procedure izbacim pojavljivanje parametra p_oslobodjen funkcija se izvrsi bez greske. Da li je neko imao ovakav problem (i kako ga je resio) ??
[ Dejan Topalovic @ 09.12.2004. 15:47 ] @
Hm, ne znam da li je ova poruka za podforum Oracle ili Java, pa cemo sacekati malkice dok ne ustanovimo :)
Mozes li poslati Java source kod (ili barem taj kljucni dio) aplikacije, da bismo imali bolji uvid u razlog tog problema?

Jesi li pokusao tu funkciju pokrenuti u nekom clientu, da vidis direktno efekat njenog izvrsavanja i to sa razlicitim parametrima (sa tim p_oslobodjen i bez)?

Koliko ja znam, nije moguce koristiti boolean datatype za in ili out parametre pri prosljedjivanju tih podataka stored procedurama iz Jave ili Microsoft ActiveX Data Objects...
Pokusaj koristiti neki drugi datatype (int ili varchar2) umjesto boolean.
[ _owl_ @ 09.12.2004. 20:44 ] @
Da, tako nesto sam i ja pretpostavljao posto u dokumentaciji za CallableStatement stoji da metoda setBoolean logicku vrednost pretvara u SQL tip BIT (koji cini mi se Oracle ne podrzava).
Nisam probao iz nekog klijenta (pretpostavljam da mislis na nesto tipa SQL plus), mada posto sam resio problem nisam se mnogo udubljivao zasto to ne radi.



[ dusanmiloradovic @ 13.12.2004. 09:57 ] @
Stvar je u tome sto je boolean u Oracleu PL/SQL tip podatka, a ne SQL tip podatka.
Naime, ako probas:

SQL> create table x(y boolean)
2 /
create table x(y boolean)
*
ERROR at line 1:
ORA-00902: invalid datatype

Kao, sto vidis , Oracle ga ne prepoznaje kao SQL tip.
Bez obzira sto ti sa CallableStatement zoves stored proceduru, i dalje se ocekuje kao ulaz SQL tip.
(Zato sto CallableStatement nasledjuje Statement)

Pozdrav,
Dusan