create or replace procedure sys.pro_hd_get_CRP_returnByYear
(
p_out_iReturn out number,
p_dDate in date
)
is
/*传入年份 获取该年份里面每个月退赔数量*/
beginSELECT
count(*) into
p_out_iReturn
FROM
system.hd_inventory a
WHERE
a.dSales=to_char(p_dDate,'yyyy');
end pro_hd_get_CRP_returnByYear;请问一下 上面的存储过程已经可以成功编译,但是我在Test的时候输入年份就报错,怎么回事啊?
我现在想按照输入的年份来执行查询 比如输入2008就出来2008年的数据。
需要这么用:
CREATE OR REPLACE PROCEDURE PRO_HD_GET_CRP_RETURNBYYEAR(P_OUT_IRETURN OUT NUMBER,
P_DDATE IN DATE) IS
/*传入年份 获取该年份里面每个月退赔数量*/
BEGIN
SELECT COUNT(*)
INTO P_OUT_IRETURN
FROM scott.emp A
WHERE to_char(a.hiredate,'yyyy') = TO_CHAR(P_DDATE, 'yyyy');
END PRO_HD_GET_CRP_RETURNBYYEAR;
/DECLARE
l_i NUMBER;
BEGIN
PRO_HD_GET_CRP_RETURNBYYEAR(l_i,to_date('1981','yyyy'));
dbms_output.put_line(l_i);
END;
/输出:
10
比如:exec sys.pro_hd_get_CRP_returnByYear(:v_out,'2008-01-01 10:10:12')