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

chuyển mảng sang thủ tục oracle

Đây là một ví dụ về cách thực hiện.

Tập lệnh sau đây thiết lập một bảng, một kiểu và một thủ tục được lưu trữ trong cơ sở dữ liệu. Thủ tục nhận một tham số của kiểu mảng và chèn từng hàng của mảng vào bảng:

CREATE TABLE strings (s VARCHAR(4000));

CREATE TYPE t_varchar2_array AS TABLE OF VARCHAR2(4000);
/

CREATE OR REPLACE PROCEDURE p_array_test(
    p_strings      t_varchar2_array
)
AS
BEGIN
  FOR i IN 1..p_strings.COUNT
  LOOP
    INSERT INTO strings (s) VALUES (p_strings(i));
  END LOOP;
END;
/

Sau đó, mã Java chứng minh việc chuyển một mảng vào thủ tục được lưu trữ này:

import java.sql.*;
import oracle.jdbc.*;
import oracle.sql.*;

public class ArrayTest {
    public static void main(String[] args) throws Exception {
        DriverManager.registerDriver(new OracleDriver());
        Connection conn = DriverManager.getConnection(
            "jdbc:oracle:thin:@localhost:1521:xe", "user", "pass");

        CallableStatement stmt = conn.prepareCall("BEGIN p_array_test(?); END;");

        // The first parameter here should be the name of the array type.
        // It's been capitalised here since I created it without using
        // double quotes.
        ArrayDescriptor arrDesc =
            ArrayDescriptor.createDescriptor("T_VARCHAR2_ARRAY", conn);

        String[] data = { "one", "two", "three" };
        Array array = new ARRAY(arrDesc, conn, data);
        stmt.setArray(1, array);
        stmt.execute();

        conn.commit();
        conn.close();
    }
}

Nếu bạn chạy tập lệnh SQL rồi đến lớp Java, rồi truy vấn bảng strings , bạn sẽ thấy rằng tất cả dữ liệu đã được chèn vào bảng.

Khi bạn nói 'một mảng ký tự', tôi đoán ý bạn là một mảng Java char S. Nếu tôi đoán đúng, thì tôi nghĩ tốt nhất bạn nên chuyển đổi char s thành String s và sau đó sử dụng cách tiếp cận tương tự như trên.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lỗi khi cập nhật Tham gia

  2. Phương pháp thu thập:Các hàm ĐẦU TIÊN &CUỐI CÙNG trong Cơ sở dữ liệu Oracle

  3. Truy vấn con TypeORM

  4. chọn rownum từ mức lương mà rownum =3;

  5. ORACLE - Chọn Đếm trên Truy vấn con