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

oracle存儲過程參數數組

發布時間: 2023-06-29 18:52:36

A. Oracle 存儲過程 數組做參數 求實例

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

B. WebService調用oracle存儲過程,傳入數組參數

你要在webservice中編寫相應的調用存儲過程的介面,具體看你應用的什麼語言技術。比如下面java調用存儲過程如下:
Session session = HibernateSessionFactory.getSession();
//連接對象
Connection conn = null;
//數據集對象
ResultSet rs = null;
//用來取得表列明的 對象
ResultSetMetaData rsmd = null;
CallableStatement proc = null;
conn = session.connection();
conn.setAutoCommit(false);
try {

if (conn != null) {
proc = conn.prepareCall("{call 存儲過程包名過程名(n個傳入參數對應n個問號,返回參數或游標?佔位) }");
// 如下過程PKG_GETDATA有4個傳入參數,所有在程序包是PKG_QUERY
//proc = conn.prepareCall("{call PKG_QUERY.PKG_GETDATA(?,?,?,?,?) }");
proc.setString(1, 參數);
//依次按照傳入參數順序與?問號位置傳入所有參數
//最後傳入n個參數後一位的返回遊標
//proc.registerOutParameter(n+1, oracle.jdbc.OracleTypes.CURSOR);
proc.execute();
rs = (ResultSet) proc.getObject(n+1);
conn.commit();
}

可以將上面代碼寫成一個公用的調用存儲過程的通用介面。

別人調用你的webservice 可以具體的參數個數及順序傳遞給你的介面,也可以傳遞一個object數組

C. oracle 存儲過程,如何傳入一個數組

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

D. 如何給存儲過程,傳一個數組參數

這個是我自己寫的一個例子,你看看:在命令窗口執行以下語句,創建自定義類型NESTEDARRAY。;在存儲過程中使用自定義類型NESTEDARRAY。PROCEDUREGET_ARR_RESULT(INPUTARRAYINNESTEDARRAY,AROUTNESTEDARRAY)ISBEGINAR:=NESTEDARRAY();FORIIN1..INPUTARRAY.COUNTLOOPAR.EXTEND;AR(I):=I||INPUTARRAY(I);ENDLOOP;ENDGET_ARR_RESULT;Java代碼:importjava.sql.Connection;importjava.sql.SQLException;importoracle.jdbc.OracleCallableStatement;importoracle.jdbc.OracleTypes;importoracle.sql.ARRAY;importoracle.sql.ArrayDescriptor;importoracle.sql.Datum;/***Java獲取Oracle存儲過程返回自定義類型*@authorluckystar**/{/***@paramargs*/publicstaticvoidmain(String[]args){Connectioncon=null;OracleCallableStatementocs=null;Stringsql="{calltest.GET_ARR_RESULT(?,?)}";try{con=DBUtil.dbUtil.getConnection();ocs=(OracleCallableStatement)con.prepareCall(sql);String[]params={「10001」,」10003」};ArrayDescriptorarrayDesc=ArrayDescriptor.createDescriptor("NESTEDARRAY",con);ARRAYinputArray=newARRAY(arrayDesc,con,params);ocs.setARRAY(1,inputArray);ocs.registerOutParameter(2,OracleTypes.ARRAY,"NESTEDARRAY");ocs.execute();ARRAYarray=ocs.getARRAY(2);Datum[]datum=array.getOracleArray();for(inti=0;i

熱點內容
鳳凰地下商城wifi密碼是多少 發布:2025-02-04 14:42:00 瀏覽:902
哈希查找演算法 發布:2025-02-04 14:40:36 瀏覽:465
雲伺服器顯示黑洞 發布:2025-02-04 14:29:05 瀏覽:300
redhatlinux教程 發布:2025-02-04 14:24:48 瀏覽:831
nvidia緩存清理嗎 發布:2025-02-04 14:16:55 瀏覽:307
筆記本電腦如何設置鎖屏密碼 發布:2025-02-04 13:54:42 瀏覽:163
構成c語言程序的基本單位 發布:2025-02-04 13:49:53 瀏覽:990
如何修改已經更改的密碼 發布:2025-02-04 13:38:38 瀏覽:776
唐dm2021買哪個配置劃算 發布:2025-02-04 13:38:38 瀏覽:628
真空壓縮重 發布:2025-02-04 13:38:37 瀏覽:643