Hi,
I have a strange behaviour with "long byte" column. On maxDb 7.5.01.00 (kernel
7.5.1 Build 000-101-062-034) I get
"[-3007]: Invalid sequence of DML and DDL statements"
when i try to insert into the table from java code.
Here's the test case:
oracle mode from sqlStudio
CREATE TABLE DOCUMENT_FORMAT (
E_DOC_VER_K_DOCUMENT NUMBER (9) NOT NULL,
E_DOC_VER_K_VERSION VARCHAR2 (20) NOT NULL,
E_FORM_TYP_K_FORMAT_TYPE NUMBER (6) NOT NULL,
D_START DATE NOT NULL,
F_INDEX CHAR (1) NOT NULL,
O_MODIFY DATE NOT NULL,
E_OPERATOR_K_OPERATOR VARCHAR2 (20) NOT NULL,
N_PATH VARCHAR2 (250),
B_TEXT LONG byte,
C_TEXT VARCHAR2 (4000),
K_PROG NUMBER (3) NOT NULL,
C_NOTE VARCHAR2 (250),
D_END DATE,
N_EFFECTIVE_MIME VARCHAR2 (80),
B_TEXT_INDEX LONG byte,
N_FILE VARCHAR2 (250),
E_LANG_K_LANGUAGE NUMBER (6),
N_DIGEST VARCHAR2 (30),
K_SIZE_TEXT NUMBER(9))
Then from java code (the connection works in oracle mode too):
String sqlString="INSERT INTO DOCUMENT_FORMAT ( " +
"E_DOC_VER_K_DOCUMENT " +
",E_DOC_VER_K_VERSION " +
",E_FORM_TYP_K_FORMAT_TYPE " +
",N_EFFECTIVE_MIME " +
",D_START " +
",F_INDEX " +
",O_MODIFY " +
",E_OPERATOR_K_OPERATOR " +
",N_PATH " +
",B_TEXT " +
",B_TEXT_INDEX " +
",N_FILE " +
",C_NOTE " +
",K_PROG " +
",E_LANG_K_LANGUAGE " +
",K_SIZE_TEXT) " +
"SELECT " +
"TO_NUMBER(?) " +
//E_DOC_VER_K_DOCUMENT
",SUBSTR(?,1,20) " +
//E_DOC_VER_K_VERSION
",TO_NUMBER(?) " +
//E_FORM_TYP_K_FORMAT_TYPE
",SUBSTR(?,1,80) " + //N_EFFECTIVE_MIME
",to_date( ?, 'DD/MM/YYYY' ) " + //D_START
",DECODE('T',? ,'T','F') " + //F_INDEX
",SYSDATE " + //O_MODIFY
",? " +
//E_OPERATOR_K_OPERATOR
",SUBSTR(?,1,250) " + //N_PATH
",? " +
//B_TEXT
",null " +
//B_TEXT_INDEX
",SUBSTR(?,1,250) " + //N_FILE
",SUBSTR(?,1,250) " + //C_NOTE
",TO_NUMBER(?) " + //K_PROG
",TO_NUMBER(?) " + //E_LANG_K_LANGUAGE
",TO_NUMBER(?) " + //K_SIZE_TEXT
"FROM DUAL";
PreparedStatement st= cn.prepareStatement(sqlString);
int i = 1;
st.setObject(i++,"1");
//E_DOC_VER_K_DOCUMENT
st.setObject(i++,"abcd"); //E_DOC_VER_K_VERSION
st.setObject(i++,"1");
//E_FORM_TYP_K_FORMAT_TYPE
st.setObject(i++,"text"); //N_EFFECTIVE_MIME
st.setObject(i++,"24/06/2004"); //D_START
st.setObject(i++,"F"); //F_INDEX
st.setObject(i++,"su"); //E_OPERATOR_K_OPERATOR
st.setObject(i++,"path"); //N_PATH
File f=new File("testFile.txt");
FileInputStream fis=new FileInputStream(f);
st.setBinaryStream(i++,fis,(int)f.length()) ; //B_TEXT
st.setObject(i++,null); //N_FILE
st.setObject(i++,null); //C_NOTE
st.setObject(i++,"1"); //K_PROG
t.setObject(i++,"1"); //E_LANG_K_LANGUAGE
st.setObject(i++,""+f.length()); //K_SIZE_TEXT
st.executeUpdate();
The file is just a simple text file (161KBytes).
I tried to drop the table and recreate it only with one numeric column and one long
column, and the modified query works.
What is the problem?
Thanks in advance
Fabio Pinotti