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

來源:互聯網
上載者:User

標籤:style   blog   http   ar   color   使用   sp   for   div   

在寫預存程序中有如下代碼:
 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 ;

使用 

 execute IMMEDIATE 解決問題

其用法 可參考網路 :http://kevinlee0755.iteye.com/blog/1381617 













 

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.