PL/SQL:函数返回无值
Posted
技术标签:
【中文标题】PL/SQL:函数返回无值【英文标题】:PL/SQL: Function returned without value 【发布时间】:2019-12-06 01:04:33 【问题描述】:我在下面写了函数来检查给定的数据是否存在。
CREATE OR REPLACE FUNCTION PSPIWEB_USER.AB_GetAuditTypeID (in_DeptID NUMBER)
RETURN NUMBER
IS
intAuditTypeID NUMBER;
BEGIN
SELECT audittypeid
INTO intAuditTypeID
FROM iqa_department
WHERE seqno = in_deptid;
RETURN intAuditTypeID;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
NULL;
WHEN OTHERS
THEN
RAISE;
END;
/
它以前可以工作,但是当我在名为 iqa_department 的表上添加新数据时,它在触发函数后突然返回该错误,我在 oracle fom mysql to oracle 中有点新
我是这样称呼它的。
Select IQA_CAR.CAR_NO,IQA_CAR.REFNO,NVL(null,' '),NVL(IQA_CAR.BFGSECTION ,' ') ,IQA_CAR.ERR_PROOF,NVL(IQA_SECTION.SECTIONNAME,' '),NVL (To_char(iqa_car.auditdate,'YYYY-MM-DD'), ' '),NVL(IQA_CAR.ISSUEDTO,' '),NVL(TQM_VWEMPLOYEE.NAME,' '), NVL (To_Char(iqa_car.issueddate,'YYYY-MM-DD'), ' '),NVL (To_Char(iqa_car.closeddate,'YYYY-MM-DD'), 'N'),NVL(VW_CURR_APPROVER.current_approver,' ') from IQA_CAR
left outer join IQA_SECTION
on IQA_SECTION.SECTIONID = IQA_CAR.AREAID
left outer join TQM_VWEMPLOYEE
on TQM_VWEMPLOYEE.EMP_NUMBER = IQA_CAR.ISSUEDTO
full outer join VW_CURR_APPROVER
on VW_CURR_APPROVER.car_no = IQA_CAR.CAR_NO
where ab_getaudittypeid(deptid) = 11
我遇到的错误
ORA-06503: PL/SQL: Function returned without value
ORA-06512: at "PSPIWEB_USER.AB_GETAUDITTYPEID", line 19
【问题讨论】:
你遇到了什么错误? 对不起,我更新了我的问题 为什么要用一个函数来完成可以通过连接或子查询完成的事情?函数的性能可能更差。 该功能已经创建并在项目交给我时在程序上使用 你能帮我把它做成子查询吗 【参考方案1】:试试这个:
CREATE OR REPLACE FUNCTION PSPIWEB_USER.AB_GetAuditTypeID (in_DeptID NUMBER)
RETURN NUMBER
IS
intAuditTypeID NUMBER;
BEGIN
SELECT audittypeid
INTO intAuditTypeID
FROM iqa_department
WHERE seqno = in_deptid;
RETURN intAuditTypeID;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
RETURN NULL;
WHEN OTHERS
THEN
RAISE;
END;
【讨论】:
以上是关于PL/SQL:函数返回无值的主要内容,如果未能解决你的问题,请参考以下文章