sql >> データベース >  >> RDS >> Oracle

私の無効な文字はどこにありますか(ORA-00911)

    示したとおりに文字列リテラルを使用する場合、問題は;です。 最後に文字。 JDBC呼び出しのクエリ文字列にそれを含めることはできません。

    単一の行のみを挿入するため、通常のINSERT 複数の行を挿入する場合でも問題ないはずです。とにかく、バッチステートメントを使用する方が効率的である可能性があります。 INSERT ALLは必要ありません 。さらに、一時的なCLOBなどは必要ありません。メソッドを次のように簡略化できます(パラメーターが正しいと仮定します):

    String query1 = "select substr(to_char(max_data),1,4) as year, " + 
      "substr(to_char(max_data),5,6) as month, max_data " +
      "from dss_fin_user.acq_dashboard_src_load_success " + 
      "where source = 'CHQ PeopleSoft FS'";
    
    String query2 = ".....";
    
    String sql = "insert into domo_queries (clob_column) values (?)";
    PreparedStatement pstmt = con.prepareStatement(sql);
    StringReader reader = new StringReader(query1);
    pstmt.setCharacterStream(1, reader, query1.length());
    pstmt.addBatch();
    
    reader = new StringReader(query2);
    pstmt.setCharacterStream(1, reader, query2.length());
    pstmt.addBatch();
    
    pstmt.executeBatch();   
    con.commit();
    


    1. ネイティブライブラリsqljdbc_auth.dllはすでに別のクラスローダーにロードされています

    2. SQL Server2014CTP1用の新しいVMを準備します

    3. SQLServerのVARCHARから数字以外の文字を削除する最速の方法

    4. SELECTクエリは各グループから1行を返します