我有這三個選擇語句,我試圖返回null變量vCLASS1_ID
或vCLASS2_ID
或vCLASS3_ID
當沒有數據被發現時。如何返回空當選擇語句返回沒有找到數據
SELECT MAX (CLASS1_ID), MAX(CLASS1_DESC)
INTO vCLASS1_ID, vCLASS1_DESC
FROM PRODUCT_CLASSIFICATION
WHERE CLASS1_DESC = P_CLASS1_DESC
GROUP BY CLASS1_ID, CLASS1_DESC;
SELECT MAX (CLASS2_ID),MAX(CLASS2_DESC)
INTO vCLASS2_ID,vCLASS2_DESC
FROM PRODUCT_CLASSIFICATION
WHERE CLASS2_DESC = P_CLASS2_DESC
GROUP BY CLASS2_ID, CLASS2_DESC;
SELECT MAX (CLASS3_ID),MAX(CLASS3_DESC)
INTO vCLASS3_ID,vCLASS3_DESC
FROM PRODUCT_CLASSIFICATION
WHERE CLASS3_DESC = P_CLASS3_DESC
GROUP BY CLASS3_ID, CLASS3_DESC;
我試圖解決由下面的方法這個問題,但我用EXCEPTION when no_data_found then
變量不會解決我的問題,因爲該功能將停止運行
我嘗試失敗
return null
使用NULLIF
函數如下,但不會返回null當有wher
e子句和當我刪除where
子句我不會得到一個單一的記錄:SELECT NULLIF (CLASS1_DESC, 'EXAMPLE') AS CLASS1_DESC FROM PRODUCT_CLASSIFICATION ---WHERE CLASS1_DESC = 'EXAMPLE' GROUP BY CLASS1_DESC
任何其他簡單的方法來做到這一點?
宣稱3 courser是更好的解決方案嗎?
只是'MAX(CLASS1_ID)'(或任何聚合函數)會做。它實際上將MAX()放在空結果集上,該結果集將返回null。順便說一句,您可以將每個sql嵌入到'BEGIN END;'中,以便您不處理任何數據。 –
我想當他使用GROUP BY子句時,即使使用MAX()也不會返回任何東西。 – Ming
@你是對的,謝謝! 'MAX(MAX(CLASS1_ID))'工作.. –