我想知道,如果在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')
答案 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)。