2016-07-06 36 views
0

存儲過程中我有一個連接的SQL語句。這包括選擇部分中的大型表達式。實際上當執行立即命令運行時,一切正常。現在我想通過將這個大型表達式包裝在一個函數中來使該語句更易於閱讀,但無論我嘗試失敗。是否有可能在動態SQL中調用函數?在動態SQL語句中使用函數調用

+0

標籤使用的DBMS的這條SQL語句。 – jarlh

+0

是的,它是但沒有代碼或錯誤不能真的幫助 – kevinsky

+0

使用'dbms_output.put_line'來檢查你的動態sql並運行它在一個單獨的塊,以查看你得到什麼錯誤,以及如何解決它們。 –

回答

0

如果你正在使用12C和你只使用這個功能,你可以使用PL/SQL聲明部分中您的SQL語句

Declare 
myvariable number; 
Begin 

    EXECUTE IMMEDIATE' 
    WITH 
     FUNCTION with_function(p_id IN NUMBER) RETURN NUMBER IS 
     BEGIN 
     RETURN p_id * p_id - p_id; 
     END; 
    SELECT with_function(3) 
    FROM dual 
    WHERE rownum = 1' into myvariable; 
    dbms_output.put_line('myvariable: '||myvariable); 
    End; 
+0

完美,這個作品 – user