2016-07-28 112 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。