Oracle
 sql >> डेटाबेस >  >> RDS >> 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;
/

जावा कोड तब इस संग्रहीत कार्यविधि में एक सरणी पास करने का प्रदर्शन करता है:

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 . को क्वेरी करते हैं , आप पाएंगे कि सभी डेटा तालिका में सम्मिलित कर दिया गया है।

जब आप 'वर्णों की एक सरणी' कहते हैं, तो मुझे लगता है कि आपका मतलब जावा 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. CLOB पर SUBSTR का प्रदर्शन

  2. प्रतीक्षा घटना:एसिंच डिस्क्रिप्टर का आकार बदलें

  3. Oracle में REPLACE () फ़ंक्शन

  4. VARCHAR2 कॉलम को अधिक लंबाई के साथ परिभाषित करने का प्रभाव

  5. एसक्यूएल एक समान क्वेरी पर शून्य मान प्रदर्शित नहीं कर रहा है?