Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Nhận CHIỀU DÀI CỦA NGUYÊN LIỆU DÀI

Tôi không nghĩ rằng có thể thao tác DÀI RAW dài hơn 32k trong PLSQL. Đây là một thủ tục java trả về độ dài của RAW DÀI.

Đầu tiên, thiết lập:

SQL> CREATE TABLE my_table (ID NUMBER, my_long_raw_column LONG RAW);

Table created

SQL> INSERT INTO my_table VALUES (1, utl_raw.cast_to_raw('123456789'));

1 row inserted

Lớp java (java của tôi hơi cũ):

SQL> CREATE OR REPLACE AND COMPILE JAVA SOURCE NAMED "Raw" AS
  2  import java.io.*;
  3  import java.sql.*;
  4  import oracle.jdbc.driver.*;
  5  
  6  public class Raw {
  7  
  8     public static int getLength(int pk) throws SQLException,IOException {
  9  
 10        Connection conn = new OracleDriver().defaultConnection();
 11  
 12        PreparedStatement ps = conn.prepareStatement
 13           ( "SELECT my_long_raw_column FROM my_table WHERE id = ?" );
 14        ps.setInt( 1, pk);
 15        ResultSet rs = ps.executeQuery();
 16  
 17        int len = 0;
 18        if (rs.next()) {
 19           InputStream is = rs.getBinaryStream(1);
 20           int nb = is.read(new byte[1024]);
 21           while (nb>0) {
 22              len += nb;
 23              nb = is.read(new byte[1024]);
 24           }
 25        } else
 26           len = -1;
 27  
 28        rs.close();
 29        ps.close();
 30
 31        return len;
 32     }
 33  }
 34  /

Java created

Hãy gọi nó là:

SQL> CREATE OR REPLACE
  2  FUNCTION get_lr_length(p_id NUMBER) RETURN NUMBER
  3  AS LANGUAGE JAVA
  4  NAME 'Raw.getLength(int) return int';
  5  /

Function created

SQL> select get_lr_length(id) from my_table;

GET_LR_LENGTH(ID)
-----------------
                9

Tôi đã thử nghiệm hàm với hơn 32k trường và nó có vẻ hoạt động.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Các yếu tố kích hoạt ngăn ngừa

  2. Nhập tệp .csv vào ứng dụng Oracle Forms

  3. cách lấy cột rowNum trong sqlite IPHONE

  4. Làm cách nào để chuyển một tham số vào tập lệnh t-sql?

  5. vấn đề trong việc tìm kiếm danh sách các tệp trong thư mục