情况是这样的:我在 Oracle SQL DB 中有一个表。该表用于报告目的。这是一个测试/开发环境。我想使用这个数据库在我们的报告工具中测试一个新的分组功能,但是我必须更新和替换所有的“数字”(不是那个表的关键)。几个数据集可以共享相同的“数字”。更新后的数字应遵循某种模式以进行自动测试。我想到了一个整数,每个新数字都会增加一个整数。所以这是我到目前为止所做的事情:首先我查询该表中所有唯一的“数字”,然后我循环遍历结果表以用生成的“new_number”替换找到的每个“数字”。然后 'new_number' 加一,然后再取下一个 'number'
这是代码:
DECLARE
Cursor MyCursor IS
SELECT DISTINCT NUMBER
FROM TABLE
ORDER BY NUMBER;
entry MyCursor%ROWTYPE;
new_number NUMBER := 111111;
BEGIN
FOR entry IN MyCursor LOOP
IF MyCursor%FOUND THEN
UPDATE TABLE
SET
NUMBER = new_number,
WHERE NUMBER = ENTRY.NUMBER;
new_number := new_number + 1;
ELSIF myCursor%NOTFOUND THEN
EXIT;
END IF;
END LOOP;
END;
现在的问题是,脚本运行但我被告知只有一行更新(最后一行,似乎)。
这是为什么?
我可以放一个
DBMS_OUTPUT.PUT_LINE(entry.number);
在循环内部,它将在每次迭代时显示在 TABLE 中找到的所有唯一数字,因此循环本身似乎正在工作。
只是mabye ...有没有办法在没有循环的情况下做到这一点?什么都想不出来。
在准备测试运行时,该脚本将只执行一次(一旦工作)。
非常感谢我提前!