2016-07-28 46 views
1

我正在閱讀命名參數。我其實有兩個問題:帶有命名參數和光標的存儲過程

如果使用命名參數語法:p_rank => 5,我只能通過我需要的東西。假設程序接受5個參數,但對於這個調用,我只想通過1個參數。

我可以:exec procedure_name(p_rank => 5)而不用擔心其他4?

現在,如何使用具有輸出REF CURSOR的命名參數?

exec customer_package.retrieve_data (
    p_rank    => 5, 
    p_value_score  => p_value, 
    p_momentum_score => p_momentum, 
    p_growth_score  => p_growth, 
    p_data    => p_output); 

P_DATA實際上是一個REF CURSOR .......所以,如果使用定位參數從SQL調用另外,我可以只定義變量作爲REF_CURSOR並打印。但是這是在一個存儲過程中調用另一個存儲過程,它將返回一個REF CURSOR .......

+1

是的,只要其他參數不是必需的,命名參數的整個概念就是讓您提供所需的參數。 –

回答

1

要調用proc作爲exec procedure_name(p_rank => 5),應該使用DEFAULT值定義其他參數。如果你有像p_data這樣的參數OUT,你應該把它傳遞給你的proc。