我有一个函数,它接收日期的varchar2格式并将日期类型值插入table.i需要在给定日期无效时引发自定义异常。 这是我的函数的代码片段
CREATE OR REPLACE PROCEDURE ADD_COMPLEX_SALE_TO_DB(pcustid Number
,pprodid Number
,pqty Number
,pdate varchar2) AS
InvalidStatus EXCEPTION;
invaliddate EXCEPTION;
SELECT STATUS INTO pstatus FROM CUSTOMER WHERE CUSTID=pcustid;
IF pstatus !='OK' THEN
RAISE InvalidStatus;
--ELSIF NOT to_date(pdate,'YYYYMMDD') THEN
--RAISE invaliddate;
END IF;
INSERT INTO SALE VALUES(SALE_SEQ.nextval,pcustid,pprodid,pqty,pprice,pdate);
EXCEPTION
WHEN InvalidStatus THEN
RAISE_APPLICATION_ERROR(-20092,'Customer status is not OK');
--WHEN invaliddate THEN
--RAISE_APPLICATION_ERROR(-20093,'Date not valid');
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR(-20000,SQLERRM);
END;
我有程序来调用这个函数和DOPL结果。我是oracle的新手,我尝试使用TO_DATE函数让它工作但不能。我需要知道是否有一种简单的方法来检查日期是否有效。日期格式应为YYYYMMDD。我尝试使用pragma但它需要所有错误代码并单独处理每一个。我需要R_A_P所有无效日期例外'-20093'错误代码。所有应该使用'-20000'错误代码引发其他异常。所以我不能在异常中使用WHEN OTHERS THEN
。任何帮助都将不胜感激。