Oracle IN 傳遞字串引數查詢失效

2022-07-14 10:00:10 字數 1075 閱讀 1708

在寫儲存過程中有如下**:
for a in (      

select a.svo_no,a.audit_no,a.order_id from tt_pi_model_rel a

) loop

select count(1) into v_flag from tt_pi_order where pi_id in (a.order_id) and regulariza_date is not null ;

//執行若干操作

end loop;

其中
select a.svo_no,a.audit_no,a.order_id  from tt_pi_model_rel a    查出來的order_id 有多個值  1000007845,1000007669

講order_id放入 pi_id in (a.order_id)中執行 查詢出錯

因為 in 中的引數問題,此時不能簡單的理解為 pi_id in (1000007845,1000007669) 而是乙個 pi_id in(乙個變數) 從而導致查詢出錯

解決辦法 : 事先將

select count(1) into v_flag  from tt_pi_order where pi_id in (a.order_id)  and regulariza_date is not null ;

拼接成sql語句的形式,而不要用傳遞a.order_id的形式,

操作如下:

execute

immediate

'select count(1) from tt_pi_order where pi_id in (

'||a.order_id||

') and regulariza_date is not null

'into c_flag ;

使用

executeimmediate 解決問題

其用法 可參考網路 : 

ORACLE in 字串,字串,字串

因為傳進來的引數是 字串,字串,字串,要實現in 字串,字串,字串 select from htl price p where p.hotel id 30073328 and p.able sale date between to date 2009 03 27 yyyy mm dd and to ...

傳遞字串 Linux Shell 傳遞引數

物聯網開發入門直播課 嵌入式 物聯網 快速上手linux 創客學院直播室 www.makeru.com.cn 嵌入式應用層開發 1小時全面認識linux網路經典案例 創客學院直播室 www.makeru.com.cn 我們可以在執行 shell 指令碼時,向指令碼傳遞引數,指令碼內獲取引數的格式為 ...

ORACLE IN 後跟 引數字串的處理方法

今天寫奈及利亞boss,資料修復指令碼時遇到乙個問題,引數字串無法再in中使用,例如 想要完成下面的查詢 select from customeren c where c.customercodestr in code 最先想到的是用regexp replace來拼接字串,將中間符號替換成 以便後續...