Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Poziv uskladistene procedure ciji parametar je korisnicki definisan tip

[es] :: Java :: Poziv uskladistene procedure ciji parametar je korisnicki definisan tip

[ Pregleda: 1880 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

star_x

Član broj: 80814
Poruke: 22
95.180.92.*



+1 Profil

icon Poziv uskladistene procedure ciji parametar je korisnicki definisan tip26.06.2010. u 21:58 - pre 122 meseci
U bazi (Postgre SQL) imam definisanu funkciju za unos podataka. Jedan od ulaznih parametara je korisnicki def. tip Adresa(ulica, broj).
Procedura radi ok kada se poziva u bazi, medjutim imam problem prilikom definisanja tipa ovog parametra i poziva procedure iz Jave.

Unapred zahvalan
Postoje 11 grupe ljudi ... oni koji znaju binarne brojeve, oni koji ne znaju i oni koji ponekad smisle neki glup slogan.
 
Odgovor na temu

biske86
Ivan Biševac
Zubin Potok

Član broj: 62435
Poruke: 979
*.dynamic.isp.telekom.rs.

Sajt: biske.rs


+39 Profil

icon Re: Poziv uskladistene procedure ciji parametar je korisnicki definisan tip27.06.2010. u 22:51 - pre 122 meseci
Niko ti ne odgovara zato što si dao premalo informacija o problemu. Kakva je funkcija (daj njen kod), kako je pozivaš u javi, daj taj deo koda itd.
 
Odgovor na temu

star_x

Član broj: 80814
Poruke: 22
95.180.92.*



+1 Profil

icon Re: Poziv uskladistene procedure ciji parametar je korisnicki definisan tip29.06.2010. u 22:11 - pre 122 meseci
Bice da si u pravu

U bazi sam kreirao sledeci tip:

CREATE TYPE adresa AS (
ulica character varying(25),
broj character varying(7)
);

Funkcija u bazi obavlja unos po primljenim parametrima (radi ok kad se poziva iz baze):

BEGIN
INSERT INTO zaposleni (sifrazaposlenog, ime, prezime, adresaprebivalista, mestoprebivalista)
VALUES (_sifrazaposlenog, _ime, _prezime, ((_adresaprebivalista).ulica, (_adresaprebivalista).broj), _mestoprebivalista);
END

Kolona adresaprebivalista je kor. definisan tip adresa.

Kada pozivam iz jave koristim sledecu funkciju:

public void callSPInsert(String sifra, String ime, String prezime, adresa adresaprebivalista, String mestoprebivalista) throws SQLException {

CallableStatement cs = conn.prepareCall("{call zaposleni_insert(?, ?, ?, ?, ?)}");
cs.setString(1, sifra);
cs.setString(2, ime);
cs.setString(3, prezime);
cs.setObject(4, adresaprebivalista);
cs.setString(5, mestoprebivalista);
cs.execute();

}

1. Kriticna tacka tip parametra funkcije callSPInsert - adresa koji je definisan u bazi (java ga ne prepoznaje)
2. Druga krit. tacka cs.setObject(4, adresaprebivalista)

E sada mapiranje, niz ili ne znam sta...

Drugi problem sporedan za ovu temu je kada pretrazujem po adresi prebivalista iz jave. Mogu pretrazivati samo ako zadam i ulicu i broj npr ... WHERE adresaprebivalista = ('ulica', 'broj') ..., a hteo sam samo po ulici recimo (adresaprebivalista.ulica = 'nesto') sto ne ide. U bazi prihvata.

Obzirom sam u Javi odnedavno malo se mucim...
Postoje 11 grupe ljudi ... oni koji znaju binarne brojeve, oni koji ne znaju i oni koji ponekad smisle neki glup slogan.
 
Odgovor na temu

biske86
Ivan Biševac
Zubin Potok

Član broj: 62435
Poruke: 979
*.dynamic.isp.telekom.rs.

Sajt: biske.rs


+39 Profil

icon Re: Poziv uskladistene procedure ciji parametar je korisnicki definisan tip29.06.2010. u 23:49 - pre 122 meseci
Ne znam puno javu ali kako si objasnio jasno je zasto nece da prihvati. Ti najpre kazes da si napravio tip "adresa". I sada ti hoces da kreiras u javi promenljivu koja je tipa adresa. Java ne zna koja je to promenljiva, sto je logicki jer ti nisi devinisao taj tip u java programu već u bazi. Pretpostavljam da moras da kreiraš jednu klasu koja ima istu strukturu kao i tip koji si kreirao u bazi. Zbog čega si uvodio u bazi novi tip "adresa"? Kako izgleda tabela zaposleni?
Zasto si stavljao preko tipa adresa polja ulica i broj? Ako bi u tabeli stavio odvojena polja onda bi trebalo stvar da se pojednostavi i da se napiše sledeća procedura:

BEGIN
INSERT INTO zaposleni(sifrazaposlenog, ime, prezime, ulica, broj, mestoprebivalista)
VALUES (_sifrazaposlenog, _ime, _prezime, _ulica, _broj, _mestoprebivalista);
END


a tabela je:

CREATE TABLE zaposleni(
sifrazaposlenog integer PRIMARY KEY,
ime varchar(25) NOT NULL,
prezime varchar(30) NOT NULL,
ulica varchar(50) NOT NULL,
broj varchar(4) NOT NULL,
mestoprebivalista varchar(30) NOT NULL
);


Možda ti imaš razlog što si stavio da ti bude tip ali ovo ti je moj predlog.

Kako god odlučiš znaj da je problem što imaš tip definisan u bazi (adresa) a nemaš ga u java programu.


 
Odgovor na temu

star_x

Član broj: 80814
Poruke: 22
95.180.92.*



+1 Profil

icon Re: Poziv uskladistene procedure ciji parametar je korisnicki definisan tip30.06.2010. u 00:17 - pre 122 meseci
Zaboravio sam da napisem da sam probao i sa definisanom klasom u javi:

class adresa {
String ulica;
String broj;

adresa(String _ulica, String _broj) {
ulica = _ulica;
broj = _broj;
}
}

ali nije proslo. Tabela zaposleni je strukture poput tvoje s tim sto su ulica i broj tipa adresa.

Znam da je najbolje da izbegnem korisnicki definisani tip, jer u tom slucaju ne bi bilo ovih problema. Razlog je istrazivackog karaktera.

Pretpostavio sam da ove opcije koje nudi PostgreSQL prati Java, i trebalo bi da je tako, ali zahteva malo vremena i iskustva da se provali..



Postoje 11 grupe ljudi ... oni koji znaju binarne brojeve, oni koji ne znaju i oni koji ponekad smisle neki glup slogan.
 
Odgovor na temu

[es] :: Java :: Poziv uskladistene procedure ciji parametar je korisnicki definisan tip

[ Pregleda: 1880 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.