2016-10-24 73 views
0

我必須在列中使用參數,列不能爲空。但參數默認爲空。我如何控制空值。 ,因爲當我沒有給出價值時,它將value視爲null,我的腳本失敗。會感謝你的幫助 例子 -oracle plsql參數默認爲空

CREATE PROCEDURE TEST1(P_1號默認爲空) 作爲 開始 選擇COL1,從表1 COL2其中COL1 = P_1 - 默認NULL;
end; /

enter code here 
+0

那麼,什麼樣的價值你要放在列,如果未在調用中提供?你必須有一些東西可以用來代替空。還是你想要選擇所有的值,如果參數爲空? (你也必須選擇*成*的東西...) –

+0

嗨亞歷克斯,如果我不放任何值,語句將只是忽略和執行沒有條件。基本上我必須使用2參數,1我會把值和另一個是默認爲空。所以它會像,,,,,那麼col1 = p_1和col2 = p_2。和p_2我會把價值和p_1將默認空 – Ronnie710

+0

亞歷克斯,我正在使用收集在條款 – Ronnie710

回答

1

您可以使用or使查詢過濾條件:

select col1, col2 
bulk collect into some_collectin 
from table1 
where p_1 is null or col1 = p_1 

如果p_1爲空,或者是因爲沒有參數傳遞或參數爲空,則第一部分匹配 - 適用於所有行。如果它不爲空,則第一部分不匹配任何行,因此應用相等性檢查並僅篩選與該參數匹配的行。

如果你有那麼其他條件,記得用括號來確保整體的邏輯是正確的:

where (p_1 is null or col1 = p_1) 
and ... 
+0

它工作亞歷克斯。非常感謝。自早晨起我就在掙扎。 – Ronnie710