-1
我正在使用Oracle-10g,即時創建一個需要在輸入參數中取前4個值的查詢。使用oracle 10g取輸入參數中的前4個數值使用oracle 10g
用戶會給很多投入,同時運行模塊報告,但查詢需要,如果用戶提供了超過4 如果用戶給出小於4或等於4 每個輸入取所有的值取前4個值值將由用戶以逗號(,)分隔。 用戶的輸入值是qry中的參數。
我QRY如下:
SELECT C.COUNTRY_NAME,OA.CITY,OA.COUNTRY_CODE,D.DEPARTURE_NO,O.STORER_ORDER_ID
FROM
ORDERS O,
ORDER_ADDRESS OA,
STORE_ADRESS SA,
DEPARTURE D,
SHIPMENT S,
LUID L,
PICKLIST_LINE_PACK_LUID PL,
STORER ST,COUNTRY C
WHERE O.INTERNAL_ORDER_ID=OA.INTERNAL_ORDER_ID
AND O.SHIPMENT_ID=S.SHIPMENT_ID
AND S.DEPARTURE_NO=D.DEPARTURE_NO
AND PL.INTERNAL_ORDER_ID=O.INTERNAL_ORDER_ID
AND PL.PACK_LUID_NO=L.LUID_NO
AND O.STORER_ID=ST.STORER_ID
AND ST.STORE_ID=SA.STORE_ID
and C.COUNTRY_CODE=OA.COUNTRY_CODE
and D.DEPARTURE_NO IN(
CASE WHEN length('9821,9254,225,9821') - nvl(length(replace('9821,9254,225,9821',',')),0) <=3
THEN
9821,9254,225,9821
End
)
這給了我一個錯誤 「ORA-00905:缺少關鍵字」
誰能PLSS幫我這個???
由於提前, 普里亞
感謝ü這麼多..即時得到一個答案,但部分..這種情況下完美地工作,如果我只有4個輸入..如果投入超過4個以上,它的力量給了我一個答案。我的需求是,如果輸入超過4,它應該只取前4個值。我試過的qry:CASE WHEN長度('9908,9896,9891,9875,9869') - nvl(長度(替換('9908,9896,9891,9875,9869',',')),0)<= 3 THEN','|| '9908,9896,9891,9875,9869'|| ','END like'%,'|| D.DEPARTURE_NO || ',%' – Priya 2014-12-02 08:20:31
以上嘗試過qry不給我一個答案..但我需要顯示第4個值的數據 – Priya 2014-12-02 08:24:02
@Priya我已經更新了答案 – Multisync 2014-12-02 08:32:06