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

Reply via email to