下面是一个函数,参数有个默认值:
CREATE OR REPLACE FUNCTION FC_TEST(EXDATESTART IN VARCHAR2:='0000-00-00',exdateend in VARCHAR2:='0000-00-00')
RETURN VARCHAR2 AS
BEGIN
--RETURN EXDATESTART;
IF EXDATESTART='0000-00-00' THEN
RETURN 'TEST';
END IF;
RETURN 'ERROR';
END;
下面是调用函数:
declare
begin
DBMS_OUTPUT.PUT_LINE(FC_test());
end;
如果我调用DBMS_OUTPUT.PUT_LINE(FC_test('','')),结果出来的是'ERROR'(奇怪的是我昨天这样调用是没有问题的)。我希望传一个空的参数给EXDATESTART,让他使用默认值,但如果调用DBMS_OUTPUT.PUT_LINE(FC_test(,''))又是不合法的,该怎么办?
CREATE OR REPLACE FUNCTION FC_TEST(EXDATESTART IN VARCHAR2:='0000-00-00',exdateend in VARCHAR2:='0000-00-00')
RETURN VARCHAR2 AS
BEGIN
--RETURN EXDATESTART;
IF EXDATESTART='0000-00-00' THEN
RETURN 'TEST';
END IF;
RETURN 'ERROR';
END;
下面是调用函数:
declare
begin
DBMS_OUTPUT.PUT_LINE(FC_test());
end;
如果我调用DBMS_OUTPUT.PUT_LINE(FC_test('','')),结果出来的是'ERROR'(奇怪的是我昨天这样调用是没有问题的)。我希望传一个空的参数给EXDATESTART,让他使用默认值,但如果调用DBMS_OUTPUT.PUT_LINE(FC_test(,''))又是不合法的,该怎么办?
11:46:32 2 (EXDATESTART IN VARCHAR2:='0000-00-00',
11:46:32 3 exdateend in VARCHAR2:='0000-00-00'
11:46:32 4 )
11:46:32 5 RETURN VARCHAR2 AS
11:46:32 6 BEGIN
11:46:32 7 --RETURN EXDATESTART;
11:46:32 8 IF EXDATESTART='0000-00-00' THEN
11:46:32 9 RETURN 'TEST';
11:46:32 10 END IF;
11:46:32 11 RETURN 'ERROR';
11:46:32 12 END;
11:46:32 13 /函数已创建。11:47:58 jlanzpa817>declare
11:48:01 2 begin
11:48:01 3 DBMS_OUTPUT.PUT_LINE(FC_test());
11:48:01 4 end;
11:48:01 5 /
TESTPL/SQL 过程已成功完成。已用时间: 00: 00: 00.11
11:48:03 jlanzpa817>
FC_test()不行吗?
SQL> declare
2 begin
3 DBMS_OUTPUT.PUT_LINE(fc_test(exdateend =>'ff'));
4 end;
5 /
TESTPL/SQL procedure successfully completed