0

我必须返回将显示表中缺失数据的过程。

CREATE OR REPLACE PROCEDURE GETEMPLOYEE_INFO
(
P_CPNCOD in varchar2,
P_PAYDAT in date,
P_PAYTYP in varchar2,
P_ERV out varchar2)
is
R_DI_FILLODINF NUMBER(20);
BEGIN
   FOR i IN (SELECT * FROM DI_ELEMOD)
   LOOP
     SELECT COUNT(*) INTO R_DI_FILLODINF
     FROM DI_FILLODINF
     WHERE P_CPNCOD=i.CPNCOD and
           P_PAYDAT=i.PAYDAT and
           P_PAYTYP=i.PAYTYP ;

    if nvl(R_DI_FILLODINF,0)<=0
     then   
    dbms_output.put_line ('missing data : ' ||     i.CPNCOD  ||     i.PAYDAT  ||     i.PAYTYP   );
    end if;
    end loop;
    EXCEPTION
       WHEN OTHERS THEN NULL;
 end;
/

但现在我的问题是,如果我输入日期“01-JUN-12”,那么输出应该显示缺失的数据,但只显示 2012 年的数据。请帮忙

非常感谢提前

DECLARE
V_INSTY DI_FILLODINF.INSTYP%TYPE;
BEGIN
GETEMPLOYEE_INFO ('CO','01-JUN-12','D',V_INSTY);
END;
/
4

2 回答 2

1

如果我理解正确,那么您需要做的是在外部查询中仅选择正确年份的值:

SELECT * FROM DI_ELEMOD
WHERE PAYDAT >= trunc(P_PAYDAT, 'yyyy') 
AND PAYDAT <= trunc(add_months(P_PAYDAT,12),'yyyy')-1
于 2012-05-29T06:43:07.187 回答
0

如果您只想发送特定日期的年份,您可以使用 Substring 或更多来使用作物数据。

于 2012-05-29T06:55:14.597 回答