儲存過程 IN 多個引數解決

2021-05-18 00:52:07 字數 466 閱讀 1807

今天寫儲存過程的時候,遇到了傳入多個引數,不能用in匹配的問題。

例如:傳入引數:

b = 'a','b','c';

pl/sql語句:

select * from table

where var in ( + b + );

不能匹配,因為pl/sql把b當做乙個完整的字串, select * from table where var in (''a','b','c'');

解決方法:

傳入引數:

b = a,b,c;

pl/sql語句:

str:= ','||b||',';

select * from table

where instr(str,','||var||',') > 0

解釋: 把傳入的引數拼接為: str = ,a,b,c,;

instr 判斷 str中是否有 ,var, 存在。

多個引數的儲存過程

今天寫了乙個通過多個引數查詢列表記錄的儲存過程,查詢和排序的時候涉及了多個表和字段,寫下來記錄一下.也給需要的同僚借鑑一下.正文如下 use dbname go object storedprocedure dbo getproductlistbymanyparams script date 07 ...

sql儲存過程in 多個引數

首先要建立乙個擷取字串的函式,新建乙個查詢,把下面 複製進去執行。函式sqlitin的第乙個引數是儲存過程要in的字串,第二個引數是分隔符 create function splitin c varchar 200 split varchar 2 returns t table col varcha...

SQL 儲存過程引數解決方案

今天做這個乙個問題,需要動態使用sql語句,原來的解決方案是在程式中是用 if else 語句來解決 後來因為資料問題,沒辦法只有使用儲存過程。源 是這樣的 這個儲存過程是對的,但是裡面有5個引數,但是在程式中除了時間外的另外三個引數都有可能為空,而且在為空的情況下需要能夠檢索查詢出所有資訊!一時間...