首页 > 解决方案 > 调用“VENTAS_MAYOR”时参数的数量或类型错误

问题描述

我做了一个名为 'VENTAS_MAYOR' 的程序,参数 'FECHITA' 类型为 DATE

CREATE OR REPLACE PROCEDURE VENTAS_MAYOR (FECHITA IN DATE)

IS
V_FECHA DATE;
V_CANTIDAD NUMBER;
V_DESCRIPCION VARCHAR2(50);
BEGIN
SELECT 
A.FECHAEMISION_BOL,
B.CANTIDAD,
C.DESCRIPCION

INTO 
V_FECHA,
V_CANTIDAD,
V_DESCRIPCION

FROM BOLETA A JOIN DETALLE B ON (A.COD_BOLETA = B.COD_DETALLE)
      JOIN PRODUCTO C ON (B.COD_DETALLE = C.CODPRODUCTO)
WHERE A.FECHAEMISION_BOL = FECHITA
ORDER BY CANTIDAD DESC;

DBMS_OUTPUT.PUT_LINE(V_CANTIDAD || V_DESCRIPCION);
END VENTAS_MAYOR;

但是当我要使用参数执行函数/过程时,我得到了那个错误......

SET SERVEROUTPUT ON;
EXECUTE VENTAS_MAYOR(05/2019);

我不知道为什么会出现这个错误,我只使用了一个参数....!

标签: oracleplsql

解决方案


因为您需要以日期格式传递输入。调用此过程的正确方法是,

SET SERVEROUTPUT ON;
EXECUTE VENTAS_MAYOR(to_date('05/01/2019','mm/dd/yyyy');

另外,请确保表中FECHAEMISION_BOL列的数据类型BOLETA。应该是DATETIMESTAMP。如果不是,则需要修改 WHERE 条件如下 -

to_date(A.FECHAEMISION_BOL,'mm/dd/yyyy') = FECHITA

推荐阅读