【发布时间】:2018-11-19 18:51:58
【问题描述】:
你好,我正在尝试使这个插入量很大,但它不起作用,甚至没有给我一些错误或警告
idproduct、precio 和 fkproovedor 变量来自另一个表
DECLARE
RAN_PRODUCT NUMBER;
RAN_CANT NUMBER;
NVENTA NUMBER;
MVENTA NUMBER;
MT NUMBER;
BEGIN
SELECT MIN (IDVENTA) INTO NVENTA FROM marcos.VENTA;
SELECT COUNT (IDVENTA) INTO MVENTA FROM MARCOS.VENTA;
FOR loop_one IN 1 .. 10
LOOP
FOR loop_TWO IN 1 .. 2
LOOP
SELECT (1 + ABS (MOD (DBMS_RANDOM.random, 50)))
INTO RAN_PRODUCT
FROM DUAL;
SELECT (1+ABS(MOD(dbms_random.random,10)))
INTO RAN_CANT
FROM DUAL;
INSERT INTO marcos.DETALLEVENTA
SELECT SEQ_DTEVENTA.NEXTVAL AS IDDETAVENTA,
PRECIO AS PRECIO,
RAN_CANT AS CANTIDAD,
RAN_PRODUCT AS FKPRODUCTO,
FKPROOVEDOR AS FKPROVEEDOR,
NVENTA AS FKVENTA
FROM MARCOS.PRODUCTO
WHERE IDPRODUCTO = RAN_PRODUCT;
END LOOP;
NVENTA := NVENTA + 1;
END LOOP;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line ('Se ha producido un error');
ROLLBACK;
结束;
【问题讨论】:
-
如果不给你一个错误为什么不工作?
-
你做了什么调试?您是否有 ID 范围为 1-50 的匹配产品?如果您删除(几乎总是错误的)
EXCEPTION WHEN OTHERS部分,或者至少在回滚后添加RAISE,您是否看到错误? (我猜测DETALLEVENTA中的列可能与您选择它们的顺序不匹配,并且您会遇到隐式转换错误,但没有实际的错误和表定义,谁知道。也许只是没有数据。)
标签: oracle oracle11g oracle10g toad