2011-10-31 33 views
0
SELECT NVL(FIELD1,0),NVL(FIELD2,0) 
    INTO var1, var2 
    FROM TABLEONE 
    WHERE SomeField_ID = 11111 
    AND SomeOtherFieldID in (1,2) 
    AND SomeStatusID in (250,360) 

這是在觸發器內,我沒有找到數據發現錯誤。 nvl不應該在兩個變量上都替換爲0嗎?如果找不到記錄,我該如何替換0?Oracle - 沒有找到數據錯誤和使用查詢與NVL

我感謝您的幫助。

+0

好吧,所以我做了一個計數,然後如果計數爲0,然後手動分配兩個變量爲0.謝謝! – kalls

回答

3

你得到一個no data found因爲您的查詢沒有返回不是nvl調用的,因爲任何行,...

nvl將表現爲你正確地預期:

if field1 == Null: 
    return 0 
else: 
    return field1 

where條款可能會過濾所有行。

WHERE SomeField_ID = 11111 
AND SomeOtherFieldID in (1,2) 
AND SomeStatusID in (250,360) 
+0

我會用count來做操作。謝謝! – kalls

+1

您也可以使用例外(防止額外計數)。 –

+0

是的。我會使用異常! – kalls