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

oracle存儲過程參數集合

發布時間: 2023-06-16 00:58:30

① oracle 存儲過程參數的問題

方案1:
(1)傳入前將單位拼接為串,格式如下:『單位1,單位2,單位3',即'43,4301',用逗號分割數據。
(2)查詢條件修改如下:
where instr(傳入的串,單位所在列)>0;
(3)注意 單位這個列不能有空的情況,否則需要加上nvl(單位,『@』),字元可以自擬;
方案2:傳入前將復選後的單位放入PL/SQL表,再將PL/SQL表作為參數進行傳遞;

如果復選的不是很大,沒有超過varchar2(4000)的話,方案1能實現。注意對參數最好加限制substrb(單位串,1,你期望的限制),這個限制可依據性能而定,一般復選框也不會一頁顯式太多,所以不必擔心串的大小。

② 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數組

熱點內容
ftp伺服器攻擊 發布:2025-07-10 10:28:46 瀏覽:140
提高studio編譯速度 發布:2025-07-10 10:28:46 瀏覽:414
Char在sql 發布:2025-07-10 10:19:19 瀏覽:782
請密碼不叫什麼說話 發布:2025-07-10 10:06:22 瀏覽:114
蘋果應用怎麼設置密碼 發布:2025-07-10 10:04:00 瀏覽:838
雪國腳本 發布:2025-07-10 10:04:00 瀏覽:938
編程讓 發布:2025-07-10 09:48:13 瀏覽:359
資料庫邏輯存儲結構 發布:2025-07-10 09:26:56 瀏覽:920
密碼編譯找規律 發布:2025-07-10 09:18:10 瀏覽:512
電影視頻緩存後 發布:2025-07-10 09:16:48 瀏覽:894