Oracle --存儲過程,輸入不定個數參數

通常來講,寫存儲過程時,輸入的參數個數是固定的,但最近業務需求,輸入的參數不固定。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;
相關文章
相關標籤/搜索