Oracle
 sql >> база данни >  >> RDS >> Oracle

Изпълнете sql оператор чрез JDBC с CLOB обвързване

Струва ми се, че трябва да използвате PL/SQL блок, за да направите това, което искате. Следното работи за мен, ако приемем, че има запис с id 1:

import oracle.jdbc.OracleDriver;
import java.sql.*;
import java.io.ByteArrayInputStream;

public class JDBCTest {

    // How much test data to generate.
    public static final int SIZE = 8192;

    public static void main(String[] args) throws Exception {

        // Generate some test data.
        byte[] data = new byte[SIZE];
        for (int i = 0; i < SIZE; ++i) {
            data[i] = (byte) (64 + (i % 32));
        }

        ByteArrayInputStream stream = new ByteArrayInputStream(data);

        DriverManager.registerDriver(new OracleDriver());
        Connection c = DriverManager.getConnection(
            "jdbc:oracle:thin:@some_database", "user", "password");

        String sql =
            "DECLARE\n" +
            "  l_line    CLOB;\n" +
            "BEGIN\n" +
            "  l_line := ?;\n" +
            "  UPDATE table SET log = log || l_line || CHR(10) WHERE id = ?;\n" +
            "END;\n";

        PreparedStatement stmt = c.prepareStatement(sql);
        stmt.setAsciiStream(1, stream, SIZE);
        stmt.setInt(2, 1);
        stmt.execute();
        stmt.close();

        c.commit();

        c.close();
    }
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Актуализирайте множество колони въз основа на процентно изчисление в Oracle

  2. как да извикам един съхранен процес от прашник и да модифицирам рекурсора, който се връща?

  3. В SQL сървър как мога да направя заявка за колона с времеви печат на Oracle през свързана сървърна връзка?

  4. Търсене в поле varchar за числови стойности от определен диапазон

  5. Oracle 11 Index само за част от данните