我有一个PL/SQL函数(在Oracle10g上运行),其中我更新了一些行。有没有办法找出有多少行受到更新的影响?当手动执行查询时,它会告诉我有多少行受到影响,我希望在PL/SQL中获得这个数字。
发布于 2009-05-14 07:33:00
您可以使用sql%rowcount
变量。
您需要在语句后面直接调用它,您需要找到受影响的行数。
例如:
set serveroutput ON;
DECLARE
i NUMBER;
BEGIN
UPDATE employees
SET status = 'fired'
WHERE name LIKE '%Bloggs';
i := SQL%rowcount;
--note that assignment has to precede COMMIT
COMMIT;
dbms_output.Put_line(i);
END;
发布于 2014-09-03 15:55:21
对于那些想要从普通命令中获得结果的人来说,解决方案可能是:
begin
DBMS_OUTPUT.PUT_LINE(TO_Char(SQL%ROWCOUNT)||' rows affected.');
end;
基本问题是SQL%ROWCOUNT是一个PL/SQL变量(或函数),不能通过SQL命令直接访问。通过使用noname PL/SQL块,可以实现这一点。
..。如果任何人有在SELECT命令中使用它的解决方案,我会很感兴趣。
发布于 2012-08-06 22:03:38
或者,您可以在过程中使用SQL%ROWCOUNT
,而不需要声明变量
https://stackoverflow.com/questions/861983
复制相似问题