2015-11-05 100 views
2

因此,讓我們假設我有以下查詢:如何避免萬一表達多功能執行不築巢

SELECT 
    CASE 
    WHEN SOME_PACKAGE.SOME_EXPENSIVE_FUNCTION IS NOT NULL 
    THEN SOME_PACKAGE.SOME_EXPENSIVE_FUNCTION || ', random string' 
    ELSE 
    'something_else' 
    END 
FROM 
    SOME_TABLE; 

是否有辦法防止這種封裝功能從沒有嵌套查詢執行不止一次?

+0

CASE表達式,而不是case語句... – jarlh

+0

@jarlh謝謝,固定 – JustMichael

+0

大!太多人混淆了! – jarlh

回答

3

這應該工作:

SELECT NVL(NULLIF(SOME_PACKAGE.SOME_EXPENSIVE_FUNCTION 
    ||', random string',', random string'),'something_else') 
FROM SOME_TABLE;