これがその方法の例です。
次のスクリプトは、データベースにテーブル、タイプ、およびストアドプロシージャを設定します。このプロシージャは、配列型のパラメータを受け取り、配列の各行をテーブルに挿入します。
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;
/
次に、Javaコードは、このストアドプロシージャに配列を渡す方法を示します。
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();
}
}
SQLスクリプトを実行してからJavaクラスを実行し、テーブルのstrings
をクエリする場合 、すべてのデータがテーブルに挿入されていることがわかります。
「文字の配列」と言うときは、Javaのchar
の配列を意味していると思います。 s。私が正しく推測した場合、char
を変換するのが最善だと思います sからString
s次に、上記と同じアプローチを使用します。