Oracle中把Array類型作為參數(shù)傳入存儲(chǔ)過程的示例
作者:佚名
本文我們主要介紹了Oracle中把Array類型作為參數(shù)傳入存儲(chǔ)過程,并用Java對其進(jìn)行調(diào)用的示例,希望能夠?qū)δ兴鶐椭?/div>
Oracle中把Array類型作為參數(shù)傳入存儲(chǔ)過程并用Java對其進(jìn)行調(diào)用的示例是本文我們主要要介紹的內(nèi)容,接下來我們就開始介紹這一過程。
使用Oracle Database 11g Enterprise Edition Release 11.2.0.1.0. 步驟:
1. 創(chuàng)建自定義的類型。由于Oracle沒有提供現(xiàn)成的array類型,這里用table類型來模擬。
CREATE OR REPLACE TYPE varchar_array is Table OF varchar2(128) 創(chuàng)建后,varchar_array是一個(gè)table,里面元素的類型為varchar2(128).
2. 創(chuàng)建一個(gè)存儲(chǔ)過程test1. 這個(gè)過程接受一個(gè)上面創(chuàng)建的varchar_array類型作為輸入?yún)?shù). 在過程體中,通過一個(gè)循環(huán)遍歷傳入的array中的每一個(gè)元素, 插入到一個(gè)表tb中:
- create or replace procedure test1(arr in varchar_array) is
- begin
- FOR i IN arr.first .. arr.last LOOP
- insert into tb values(arr(i));
- END LOOP;
- end test1;
3. 數(shù)據(jù)庫這邊的基本上完事了。 Java程序如下, 基本上和普通程序差不多:
- String driver = "oracle.jdbc.driver.OracleDriver";
- String strUrl = "jdbc:oracle:thin:@192.168.1.199:1521:orcl";
- Statement stmt = null;
- ResultSet rs = null;
- Connection conn = null; try {
- Class.forName(driver);
- conn = DriverManager.getConnection(strUrl, "user", "pass");
- CallableStatement proc = null;
- proc = conn.prepareCall("{ call test1(?) }"); //調(diào)用存儲(chǔ)過程test1
- //不一樣的地方,獲得上面創(chuàng)建的自定義的類型,注意大小寫
- ArrayDescriptor descriptor = ArrayDescriptor.createDescriptor("VARCHAR_ARRAY",
- conn);
- List list = new ArrayList();
- list.add("a");
- list.add("b");
- //把list中的元素轉(zhuǎn)換成自定義的類型
- ARRAY array = new ARRAY(descriptor, conn, list.toArray()); proc.setArray(1, array); proc.execute(); catch (Exception ex) {
- ex.printStackTrace();
- } finally {
- ..... 各種 close ......
- }
執(zhí)行該Java程序,查詢表tb,程序中的元素正常插入。
以上就是Oracle中把Array類型作為參數(shù)傳入存儲(chǔ)過程,并用Java對其進(jìn)行調(diào)用的示例的全部,本文我們就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@!
【編輯推薦】
責(zé)任編輯:趙鵬
來源:
火魔網(wǎng)


相關(guān)推薦




