當前位置:首頁 » 存儲配置 » oracle存儲過程數組

oracle存儲過程數組

發布時間: 2022-07-23 08:44:16

『壹』 oracle中存儲過程怎麼定義一個數組

在PL/sql中是沒有數組(Array)概念的。但是如果程序員想用Array的話,就得變通一下,用TYPE 和Table of Record來代替多維數組

『貳』 oracle測試存儲過程傳入數組怎麼傳

這個是我自己寫的一個例子,你看看:
在命令窗口執行以下語句,創建自定義類型NESTEDARRAY。
create or replace TYPE NESTEDARRAY IS TABLE OF NUMBER;

在存儲過程中使用自定義類型NESTEDARRAY。
PROCEDURE GET_ARR_RESULT(INPUTARRAY IN NESTEDARRAY, AR OUT NESTEDARRAY) IS
BEGIN
AR := NESTEDARRAY();

FOR I IN 1 .. INPUTARRAY.COUNT LOOP
AR.EXTEND;
AR(I) := I|| INPUTARRAY(I);
END LOOP;
END GET_ARR_RESULT;

java代碼:
import java.sql.Connection;
import java.sql.SQLException;

import oracle.jdbc.OracleCallableStatement;
import oracle.jdbc.OracleTypes;
import oracle.sql.ARRAY;
import oracle.sql.ArrayDescriptor;
import oracle.sql.Datum;

/**
* Java獲取Oracle存儲過程返回自定義類型
* @author lucky star
*
*/
public class OracleTypeResultTest {

/**
* @param args
*/
public static void main(String[] args) {
Connection con = null;
OracleCallableStatement ocs = null;
String sql = "{call test.GET_ARR_RESULT(?,?)}";

try {
con = DBUtil.dbUtil.getConnection();
ocs = (OracleCallableStatement) con.prepareCall(sql);
String[] params = {「10001」,」10003」};
ArrayDescriptor arrayDesc = ArrayDescriptor.createDescriptor("NESTEDARRAY", con);
ARRAY inputArray = new ARRAY(arrayDesc, con, params);
ocs.setARRAY(1, inputArray);
ocs.registerOutParameter(2,OracleTypes.ARRAY,"NESTEDARRAY");
ocs.execute();

ARRAY array = ocs.getARRAY(2);
Datum[] datum = array.getOracleArray();
for (int i=0;i<datum.length;i++) {
System.out.println(datum[i].intValue());
}

} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
if(ocs!=null)ocs.close();
if(con!=null)con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

}

用VARCHAR2測試,發現存儲過程中無法獲取到傳入的數組的值。
不過,將自定義類型由varchar2改成NVarchar2就成功了。

『叄』 oracle 存儲過程,如何傳入一個數組

這個是不行的,數組內容必須首先在存儲過程里定義好數組類型,然後給予定義好的數據類型定義數組型變數。存儲過程的入參是做不到的。一般情況下,採用字元串的方式,並給每項用特定的分隔符的方式傳入,然後在存儲過程中按照分隔符解析出每一項,插到存儲過程的定義的數組的每一項上去。

『肆』 oracle 存儲過程 數組循環

declare
type typ_rec is record of (student.name%type, student.age%type); --集合變數
type typ_tab is table of typ_rec index by binary_integer; --以集合變數為單位的table數組
rec_sql typ_rec;
another_rec student%rowtype; --跟rec_sql一樣
begin
--for循環里的rec_tmp不用定義,可以自動生成的
for rec_tmp in (select t.name, t.age from student t) loop
dbms_output.putline(rec_tmp.name || ' ''s age + 1 = ' || to_char(rec_tmp.age + 1) );
end loop;
exception
when others then
return;
end;

『伍』 oracle存儲過程怎麼將變數扔進數組

先自定義集合類型變數類型,然後定義對應的變數,直接把集合類型穿給存儲過程就可以了,不用在存儲過程中搞,應用程序中搞好傳過去就可以了,我都是這樣搞的

『陸』 Oracle 存儲過程 數組做參數 求實例

packtest.test(v_string,v_int);
你的v_string輸入參數沒有初始化。
v_string system.packtest.string_array := system.packtest.string_array('a','b','c');

『柒』 oracle中的存儲過程可以用數組嗎

首先你需要定義一個數組類型,然後定義這個數組變數declaretypea_typeistableofnumber;--typea_typeisarray(10)ofnumber;--下面一種定義方式則指定了該數組的最大元素個數aa_type:=a_type();--定義並初始化一個數組變數begina.extend(3);--數組擴展到3個元素a(1):=1;a(2):=10;a(3):=100;end;另外數組還有一下方法和屬性first--第一個元素下標last--最後一個元素下標count--數組元素個數prior(n)--下標n的前一個元素下標next(n)--下標n後一個元素下標extend(n)--添加n個數組元素,不帶參數添加一個數組元素delete(n)--刪除數組中下標為n的元素,不帶參數刪除整個數組元素

『捌』 oracle 存儲過程中如何使用數組,請給一個能調試成功的例子

oracle這么強大的資料庫能使用數組的
在oracle中,數組主要是用來存儲批量數據,一次性的對資料庫進行插入,更新,刪除操作。
下面給你一個批量插入的例子,其他都類似的
這是我的blog上面有例子,你自己看看吧。
http://zhuwei511.blog.sohu.com/

『玖』 oracle存儲過程中如何使用數組

首先你需要定義一個數組類型,然後定義這個數組變數
declare
type a_type is table of number;
-- type a_type is array(10) of number;
-- 下面一種定義方式則指定了該數組的最大元素個數

a a_type := a_type(); -- 定義並初始化一個數組變數
begin
a.extend(3); -- 數組擴展到3個元素
a(1) := 1;
a(2) := 10;
a(3) := 100;
end;

另外數組還有一下方法和屬性
first -- 第一個元素下標
last -- 最後一個元素下標
count -- 數組元素個數
prior(n) -- 下標 n 的前一個元素下標
next(n) -- 下標 n 後一個元素下標
extend(n) -- 添加 n 個數組元素,不帶參數添加一個數組元素
delete(n) -- 刪除數組中下標為 n 的元素,不帶參數刪除整個數組元素

『拾』 怎樣在oracle存儲過程中定義數組

首先你需要定義一個數組類型,然後定義這個數組變數
declare
type a_type is table of number;
-- type a_type is array(10) of number;
-- 下面一種定義方式則指定了該數組的最大元素個數

a a_type := a_type(); -- 定義並初始化一個數組變數
begin
a.extend(3); -- 數組擴展到3個元素
a(1) := 1;
a(2) := 10;
a(3) := 100;
end;

另外數組還有一下方法和屬性
first -- 第一個元素下標
last -- 最後一個元素下標
count -- 數組元素個數
prior(n) -- 下標 n 的前一個元素下標
next(n) -- 下標 n 後一個元素下標
extend(n) -- 添加 n 個數組元素,不帶參數添加一個數組元素
delete(n) -- 刪除數組中下標為 n 的元素,不帶參數刪除整個數組元素

熱點內容
文件夾兩孔 發布:2024-10-06 23:48:53 瀏覽:351
ftp工具分析 發布:2024-10-06 23:48:51 瀏覽:157
伺服器被游戲封機器碼怎麼辦 發布:2024-10-06 23:46:10 瀏覽:160
股票java 發布:2024-10-06 23:38:46 瀏覽:291
安卓演算法 發布:2024-10-06 23:14:20 瀏覽:183
域名訪問404 發布:2024-10-06 23:08:52 瀏覽:708
訪問筆錄模版 發布:2024-10-06 22:36:54 瀏覽:140
多用途編程 發布:2024-10-06 22:35:58 瀏覽:618
msde2000資料庫下載 發布:2024-10-06 22:33:35 瀏覽:45
什麼配置可以算神機 發布:2024-10-06 21:52:09 瀏覽:424