ORACLE SQL%ROWCOUNT不';不要在游标提取中工作
在下面的代码中,我无法在游标提取中获取插入的行数ORACLE SQL%ROWCOUNT不';不要在游标提取中工作,oracle,plsql,Oracle,Plsql,在下面的代码中,我无法在游标提取中获取插入的行数 ... row_count NUMBER:= 0; BEGIN OPEN object_id_cur(id, c_bool); LOOP FETCH object_id_cur INTO l_object_id; EXIT WHEN object_id_cur%NOTFOUND; INSERT INTO table1(
...
row_count NUMBER:= 0;
BEGIN
OPEN object_id_cur(id, c_bool);
LOOP
FETCH object_id_cur INTO l_object_id;
EXIT WHEN object_id_cur%NOTFOUND;
INSERT INTO table1(
id,
num
)
SELECT t2.r_object_id,
t2.num
FROM table2
WHERE t2.r_object_id = l_object_id.r_object_id;
row_count:= row_count + SQL%ROWCOUNT;
-- I also tried dbms_output.put_line(SQL%ROWCOUNT);
END LOOP;
CLOSE object_id_cur;
COMMIT;
dbms_output.put_line('insert count= ' || row_count || ' rows inserted...');
END;
我得到的结果是:
count=插入的行…
count为空。如果我将insert移到游标获取之外,那么行计数就可以正常工作。对此有逻辑上的解释吗?谢谢 SQL%ROWCOUNT
返回上次执行的DML
获取/处理的行数。如果DML在获取1行后由于任何原因失败,SQL%ROWCOUNT
将只返回1,即迄今为止获取/处理的行数。它不会告诉你总数。我做了一个简单的PLSQL块,使SQL%ROWCOUNT
工作正常。您的代码中似乎还有其他不起作用的内容
declare
num number := 0;
begin
for i in 1 .. 10
loop
insert into a_table (id)
values (i);
num := num + sql%rowcount;
end loop;
dbms_output.put_line (num);
end;
SQL%ROWCOUNT
返回上次执行的DML
获取/处理的行数。如果DML在获取1行后由于任何原因失败,SQL%ROWCOUNT
将只返回1,即迄今为止获取/处理的行数。它不会告诉你总数。我做了一个简单的PLSQL块,使SQL%ROWCOUNT
工作正常。您的代码中似乎还有其他不起作用的内容
declare
num number := 0;
begin
for i in 1 .. 10
loop
insert into a_table (id)
values (i);
num := num + sql%rowcount;
end loop;
dbms_output.put_line (num);
end;
count
是保留关键字。使用“count”
或其他标识,如cnt
。另外,在increment语句的末尾添加缺少的分号
declare
cnt number := 0;
begin
. . .
cnt := cnt + SQL%ROWCOUNT;
. . .
演示:
count
是保留关键字。使用“count”
或其他标识,如cnt
。另外,在increment语句的末尾添加缺少的分号
declare
cnt number := 0;
begin
. . .
cnt := cnt + SQL%ROWCOUNT;
. . .
演示:
代码正在编译。我可以看出它不会编译并抛出问题。缺少一个
atcount:=count+SQL%ROWCOUNT
Hi@XING。是的,它的编译就是我手动编写count变量来说明这个问题。我好像错过了比赛;代码正在编译。我可以看出它不会编译并抛出问题。缺少一个
atcount:=count+SQL%ROWCOUNT
Hi@XING。是的,它的编译就是我手动编写count变量来说明这个问题。我好像错过了比赛;嗨,古尔夫。是的,在真实场景中,我使用了变量row_count,得到了相同的问题。我只是写了count来说明这个问题;抱歉搞混了。他说代码是编译的。我猜他只是举了一个例子,说明count
不起作用。如果他使用了count
,他肯定会得到编译错误。是的,在真实场景中,我使用了变量row_count,得到了相同的问题。我只是写了count来说明这个问题;抱歉搞混了。他说代码是编译的。我猜他只是举了一个例子,说明count
不起作用。如果他使用了count
,他肯定会得到编译错误。正如邢所说,我似乎必须重新安排代码,因为它编译得很好,但没有返回行数@古尔文德·辛格的方法对我和邢的方法都有效。谢谢你的帮助!但是我想说我们实际上什么也没做。。您的代码已经在运行,没有问题。对于这个问题,演示和所有答案似乎都毫无价值。正如XING所说,我似乎不得不重新安排我的代码,因为它编译得很好,但没有返回行数@古尔文德·辛格的方法对我和邢的方法都有效。谢谢你的帮助!但是我想说我们实际上什么也没做。。您的代码已经在运行,没有问题。对于这个问题,演示和所有答案似乎都毫无价值。