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]