[ jocat @ 13.12.2007. 18:32 ] @
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)


[ bags @ 13.12.2007. 18:48 ] @
Probaj sa datumom bez crtica, znaci : "20071229" ili probaj koristiti Java.sql.Date.


[ jocat @ 13.12.2007. 18:55 ] @
kada stavim >

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

javi gresku >

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

[ bags @ 13.12.2007. 20:16 ] @
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"));


[ jocat @ 14.12.2007. 06:36 ] @
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.

[ jocat @ 15.12.2007. 11:22 ] @
Problem je resilo, verovali ili ne, jedna linija koda u stored proceduri >

Code:

SET DATEFORMAT ydm