Hi,
the problem is that you use a long value as parameter within the select part of the 
Insert-Select command. This is currently not supported by MaxDB. I guess your second 
example (only one long column) works, because you do not pass the long column as 
parameter of the select part of your insert, right? However, you can run the insert 
without the select.

String sqlString="INSERT INTO BigInsert (  " +
                            "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) " +
                        "VALUES (" +
                            "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
                        ")"; 

Hope, this is a possible workaround for you.
Regards,
Marco 
----------------------------------------------
Marco PASKAMP
MaxDB, SAP Labs Berlin

> -----Original Message-----
> From: Fabio Pinotti [mailto:[EMAIL PROTECTED]
> Sent: Donnerstag, 24. Juni 2004 18:21
> To: [EMAIL PROTECTED]
> Subject: Long Byte: Invalid sequence of DML and DDL statements
> 
> 
> 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
> 

-- 
MaxDB Discussion Mailing List
For list archives: http://lists.mysql.com/maxdb
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to