具有多个默认参数的SQL函数

时间:2014-05-05 10:44:16

标签: sql oracle

我想知道,如果在SQL中有任何可能的方法来区分调用函数时设置了哪一个默认参数? F.E.如果有功能:

CREATE OR REPLACE FUNCTION someFunction (
ID NUMBER,
showNames VARCHAR2 DEFAULT 'N',
showAddress VARCHAR2 DEFAULT 'N')

它将被称为:

someFunction(123, 'Y')

有没有办法区分哪个参数是由'Y'设置的?或者,如果我需要将showAddress设置为'Y',我必须调用这样的函数:

someFunction(123, 'N', 'Y')

3 个答案:

答案 0 :(得分:4)

如果您使用Oracle数据库,则可以指定确切的参数名称:

   someFunction(123, showAddress =>'Y')

答案 1 :(得分:1)

因为它被标记为Oracle;您可以使用formal => actual之类的命名参数。所以在你的情况下,你可以说someFunction(123, shownames => 'Y')在哪种情况下将设置ID和显示名称;而showaddress将具有默认值。

否则,它是所有位置参数,因此调用someFunction(123, 'Y')将设置ID,然后根据参数的位置显示名称。

在此处查看更多信息

http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/subprograms.htm#LNPLS00825

答案 2 :(得分:0)

尝试此方法后:

 someFunction(123, showAddress =>'Y')

我有异常消息: ORA-00907: missing right parentesis. 只有当我使用showAddress =>'Y'时才会出现此问题 - 当我只使用someFunction(123)时,一切正常。 可以使用旧的ORACLE版本吗? (我现在使用10.2)。