2015-11-05 103 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;