通常來講,寫存儲過程時,輸入的參數個數是固定的,但最近業務需求,輸入的參數不固定。sql
思路:oracle存儲過程的輸入參數個數、類型確定不能改,所以輸入不定個數參數時必須另想它法。oracle
分析:在網上找到一些解決方法oop
方法一:客戶端將須要傳入的參數先拼接成一個字符串,再傳給oracle存儲過程,存儲過程收到該字符串後,進行解析出全部的須要的參數。學習
方法二:利用oralce的Types來作。code
本項目中,項目經理要求的時間比較緊,所以我採用第一種方案實現了;項目經理說第二種方案確定能夠實現,只是須要畫時間,能夠做爲業餘學習。字符串
第一種方法以下:class
begin select instr(l_cstmIdAll, '|') into l_count from dual; while l_count > 1 loop --1.截取客戶id select substr(l_cstmIdAll, 0, l_count - 1) into l_cstmId from dual; dbms_output.put_line('拿到了cstmId,作你本身想作的事情 '); --2.從新開始計算字符串 select substr(l_cstmIdAll, l_count + 1) into l_cstmIdAll from dual; --3.從新給l_count賦值 select instr(l_cstmIdAll, '|') into l_count from dual; end loop; end;