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

подаване на масив към процедурата на Oracle

Ето пример как да го направите.

Следният скрипт настройва таблица, тип и съхранена процедура в базата данни. Процедурата взема параметър от типа на масива и вмъква всеки ред от масива в таблицата:

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 с. Ако предположих правилно, тогава мисля, че ще бъде най-добре да конвертирате char s към String s и след това като използвате същия подход, както по-горе.



  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. Мигриране на база данни на Oracle от AWS EC2 към AWS RDS, част 2

  3. Правилният начин за предоставяне на достъп на потребителите до допълнителни схеми в Oracle

  4. Хеш присъединяване в Oracle с пример

  5. Разделената последователност на Oracle