Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

Pozivanje stored procedure iz Jave - neki problem sa cursorom

  • 5 odgovora
  • 3.138 pregleda

Najnovija ↓

Pozivanje stored procedure iz Jave - neki problem sa cursorom 13.12.2007. u 19:32 · pre 229 meseci #1
Code:

String command = "{call BestEmployees.dbo.smene_Exception(?,?,?,?,?)}";
            CallableStatement cstmt = conn.prepareCall (command);
            
            cstmt.setLong(1, getIdana());
            cstmt.setString(2, getOdelenje());
            cstmt.setString(3, getRadnik());
            cstmt.setDate(4, Date.valueOf("2007-12-12"));
            cstmt.setDate(5, Date.valueOf("2007-12-29"));
                        cstmt.execute();
                        cstmt.close();


Stvar je u sledećem. Kad ja pozovem stored proceduru u Query Analyzeru, stored procedura sve sto treba da odradi ona i odradi.
I ne postoje nikakve greške.

Sama procedura ima deklarisan Cursor koji prolazi kroz tabelu, i odrađuju se neke stvari.

Da bih utvrdio u čemu je problem, ubacio sam neke insert-e da vidim šta se dešava što se tiče nekih od vrednosti u samoj proceduri.

Datumi koji su joj prosleđeni su u dobrom formatu.

Utvrdio sam da kad dođe do cursora, @FETCH_STATUS dobije vrednost -1. Zašto to ?

ni prvi fetch ne bude dobar. a ponavljam kad se pozove iz Query Analyzera cela procedura prodje kako treba.

Ono što javi java je sledeće :

Code:

java.sql.SQLException: The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.
    at net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.java:365)
    at net.sourceforge.jtds.jdbc.TdsCore.tdsErrorToken(TdsCore.java:2781)
    at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2224)
    at net.sourceforge.jtds.jdbc.TdsCore.getMoreResults(TdsCore.java:633)
    at net.sourceforge.jtds.jdbc.JtdsStatement.processResults(JtdsStatement.java:525)
    at net.sourceforge.jtds.jdbc.JtdsStatement.executeSQL(JtdsStatement.java:487)
    at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.execute(JtdsPreparedStatement.java:478)


Potpis
... sve se moze kad se hoce ...
Re: Pozivanje stored procedure iz Jave - neki problem sa cursorom 13.12.2007. u 19:55 · pre 229 meseci #3
kada stavim >

cstmt.setDate(5, java.sql.Date.valueOf("20071229"));

javi gresku >

java.lang.IllegalArgumentException
at java.sql.Date.valueOf(Unknown Source)

Potpis
... sve se moze kad se hoce ...
Re: Pozivanje stored procedure iz Jave - neki problem sa cursorom 13.12.2007. u 21:16 · pre 229 meseci #4
Hehe mislio sam ili jedno ili drugo. :)

Znaci prvo:

Code:

cstmt.setDate(4, Date.valueOf("20071212"));


a ako nece to onda nesto ovako:

Code:

java.sql.Date datum = java.sql.Date.valueOf("2007-12-12"));


Potpis
Free advice is seldom cheap.
Re: Pozivanje stored procedure iz Jave - neki problem sa cursorom 14.12.2007. u 07:36 · pre 229 meseci #5
Uf, neće ni tako da radi :(

Što se tiče prosleđivanja datuma mislim da je to sad ok, jer sam ubacio odmah na početku insert u stored proceduri za ta dva datuma da vidim da li ih dobro prenese, i prenese ih ...

Čak sam probao i da na taj dan dodam još jedan i to da upišem, i to je ok.

Uzgred, da li nekako može da se print funkcija iz stored procedure koje postoje, negde prikazuju, prilikom poziva iz Jave ?

Izgleda da je neki problem u funkcijama convert koje koristim za konverziju recimo varchar(10) u datetime, .. Ili mozda neki cast.. Ali napominjem da ovo sve radi kad se pozove iz Query Analyzera ...

Da li je moguće da Java to sve preuzima na sebe kao izvršavanje ? pa da s etu neki tipovi ne slažu, a tamo su se slagali ?

Da li možda sve ovo treba drugačije pozvati, jer mi ova stored procedura ne treba ništa da vrati, već samo da napuni jednu tabelu.

Potpis
... sve se moze kad se hoce ...
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme