Tho*_*zer 155 oracle plsql sql-update
我有一个PL/SQL函数(在Oracle 10g上运行),我在其中更新了一些行.有没有办法找出UPDATE影响了多少行?当手动执行查询时,它会告诉我有多少行受到影响,我想在PL/SQL中获取该数字.
Cli*_*ive 234
你使用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;
Run Code Online (Sandbox Code Playgroud)
CLS*_*CLS 23
对于那些想要普通命令的结果的人来说,解决方案可能是:
begin
DBMS_OUTPUT.PUT_LINE(TO_Char(SQL%ROWCOUNT)||' rows affected.');
end;
Run Code Online (Sandbox Code Playgroud)
基本问题是SQL%ROWCOUNT是PL/SQL变量(或函数),不能直接从SQL命令访问.通过使用noname PL/SQL块,可以实现这一点.
...如果有人有解决方案在SELECT命令中使用它,我会感兴趣.
或者,SQL%ROWCOUNT
您可以在过程中使用它,而无需声明变量