2009/08/28

Oracle DB 得知 DML動作是否成功與處理的筆數

在 Oracle Database 中, 做 "Insert、Update、Delete" 之後, 可利用 "SQL%RowCount", 即可得知 DML 處理的筆數.

若 "SQL%RowCount = 0", 則表示 "DML無處理任何資料" or "DML執行失敗".

若 "SQL%RowCount > 0", 則表示 "DML有處理資料成功", 且 "其值" 便是處理的資料筆數.

 範例
create table tom1 ( aa varchar2(100) );

insert into tom1 values( '1' );
insert into tom1 values( '11' );
insert into tom1 values( '2' );

begin
insert into tom1 values( '3' );
dbms_output.put_line( '新增筆數 = ' || SQL%ROWCOUNT );

update tom1
set aa = 'test' || aa
where aa like '1%';
dbms_output.put_line( '修改筆數 = ' || SQL%ROWCOUNT );

delete
from tom1;
dbms_output.put_line( '刪除筆數 = ' || SQL%ROWCOUNT );

commit;
end;

drop table tom1;

--結果
新增筆數 = 1
修改筆數 = 2
刪除筆數 = 4