【发布时间】:2018-12-03 13:19:27
【问题描述】:
ORA-01422:精确提取返回的行数多于请求的行数 ORA-06512:在第 19 行 01422. 00000 - “精确提取返回的行数超过了请求的行数” *原因:exact fetch中指定的数量小于返回的行数。
*操作:重写查询或更改请求的行数
这是我的代码。它总是给我同样的问题,我不明白如何解决它。请有人帮助我。
VARIABLE b_colacion NUMBER;
VARIABLE b_locomocion NUMBER;
EXECUTE :b_colacion := 8000;
EXECUTE :b_locomocion := 12000;
DECLARE
v_min_ven NUMBER;
v_max_ven NUMBER;
v_id_vendedor NUMBER;
v_sueldo_base NUMBER;
v_annos_contratado NUMBER(2);
v_valor_asig_annos NUMBER(8):=0;
BEGIN
SELECT MIN(id_vendedor) , MAX(id_vendedor)
INTO v_min_ven , v_max_ven
FROM vendedor;
WHILE v_min_ven <= v_max_ven
LOOP
SELECT id_vendedor , sueldo_base , TO_CHAR(SYSDATE , 'YYYY') - TO_CHAR(fecha_contrato , 'YYYY')
INTO v_id_vendedor , v_sueldo_base , v_annos_contratado
FROM vendedor
ORDER BY id_vendedor ASC;
IF v_annos_contratado > 0 THEN
SELECT ROUND(v_sueldo_base * (porc_asignado_contr/100))
INTO v_valor_asig_annos
FROM porc_bonif_annos_contrato
WHERE v_annos_contratado BETWEEN annos_inf AND annos_sup;
END IF;
INSERT INTO HABERES_CALCULADOSOS
VALUES(v_min_ven , :b_colacion , :b_locomocion , v_valor_asig_annos);
COMMIT;
END LOOP;
END;
【问题讨论】: