oracle的function中如何使参数为可选项
使用default即可。
CREATE OR REPLACE FUNCTION demo_fun(I_Names VARCHAR2,I_Age INTEGER DEFAULT 0,I_Sex VARCHAR2 DEFAULT '男') RETURN VARCHAR2 IS V_RESULT VARCHAR2(32); BEGIN V_RESULT := I_Names||':'||TO_CHAR(I_Age)||'岁,'||I_Sex; RETURN V_RESULT; END;
如上function所示,把I_Sex的值默认为男
当正常输入三个参数的时候,返回值就是输入的结果。
例如:SELECT demo_fun('ZHANSAN','18','123') FROM DUAL 返回的结果是 : ZHANSAN:18岁,123
当输入两个参数的时候,function并不会出错。而是会返回默认的值
例如:SELECT demo_fun('ZHANSAN','18') FROM DUAL 返回的结果是 : ZHANSAN:18岁,男
-----------------------------------------------------------------------------------------------------------------------------------------
上面是根据顺序指定默认值的,即两个参数的时候,第三个为默认值,一个参数的时候,第二三为默认值
如果我想让第二个参数为默认值,第三个参数不为默认值怎么办呢?
用如下方法请求即可。
SELECT demo_fun('ZHANSAN',I_Sex=>'男') FROM DUAL
用I_Sex指定是I_Sex参数的值,这样就能让第二个参数为默认值了,返回的结果为:ZHANSAN:0岁,男