我希望一次性运行一个存储过程近千条记录(P_SHIPMENT_GID
),这是伪代码。
DECLARE
P_SHIPMENT_GID VARCHAR2(200);
BEGIN
P_SHIPMENT_GID := NULL;
ULE_PKG_UNPLANNED_ICT_CALC.UNPLANNED_ICT_CALC(
P_SHIPMENT_GID => P_SHIPMENT_GID
);
END;
如何使用或不使用游标来实现此目的?
答案 0 :(得分:0)
不清楚你想做什么(1000条记录来自哪里?)但是这里有一个"模式"我很确定你可以使用:
BEGIN
FOR i IN (SELECT table_name, status FROM user_tables) LOOP
dbms_output.put_line('name : ' || i.table_name ||
' status : ' || i.status);
END LOOP;
END;
这会在隐式游标上创建一个循环,并允许您以可读的方式使用返回的行/列。
答案 1 :(得分:0)
您可以根据需要编写此anonymous
块。虽然您不清楚存储要传递给过程/ pkg的SHIPMENT_GID
值的位置。
BEGIN
FOR rec IN ( --Assuming your shipmentid are stored in a table
SELECT SHIPMENT_GID
FROM Your_TABLE)
LOOP
ULE_PKG_UNPLANNED_ICT_CALC.UNPLANNED_ICT_CALC (
P_SHIPMENT_GID => rec.SHIPMENT_GID);
END LOOP;
END;