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岁,男

posted @ 2020-12-22 21:06  masha2017  阅读(486)  评论(0编辑  收藏  举报