MySQL的ROW_COUNT()和ORACLE中的SQL%ROWCOUNT函數做用並不徹底相同。 從做用上來講,二者都是返回前一個SQL進行UPDATE,DELETE,INSERT操做所影響的行數,可是在UPDATE上二者仍是有必定區別的。 經過一個更新的例子來講明: MySQL上的測試(數據庫版本爲:5.1.30): 1.建立數據庫表: create table t( id int, name varchar(50), address varchar(100), primary key(id,name) )engine =InnoDB; 2.插入測試數據: insert into t (id,name,address) values (1,'yubowei','weifang'), (2,'sam','qingdao'); 3.update t set address = 'weifang' where id = 1 and name = 'yubowei'; 此時查看影響的行數: select row_count(); ==〉執行結果爲0; 4.update t set address = 'beijing' where id = 1 and name = 'yubowei'; 此時查看影響的行數: select row_count(); ==〉執行結果爲1; 從上面的測試能夠得出在MySQL中只有真正對記錄進行修改了的狀況下,row_count纔會去記錄影響的行數,不然若是記錄存在可是沒有實際修改則不會將該次更新記錄到row_count中。 ORACLE上的測試(數據庫版本爲:10G): 1.建立數據庫表: create table t( id int, name varchar2(50), address varchar2(100), primary key(id,name) ); 2.插入測試數據: insert into t (id,name,address) values (1,'yubowei','weifang'), (2,'sam','qingdao'); 3.update t set address = 'weifang' where id = 1 and name = 'yubowei'; 此時查看影響的行數: v_RowCount := SQL%ROWCOUNT; ==〉執行結果爲1; 4.update t set address = 'beijing' where id = 1 and name = 'yubowei'; 此時查看影響的行數: v_RowCount := SQL%ROWCOUNT; ==〉執行結果爲1; 從上面的測試能夠得出在ORACLE,只要更新的記錄存在,則不論實際由沒有修改數據,影響的行數都會被累積記錄下來。 對於習慣於經過使用SQL%ROWCOUNT來判斷表中有沒有記錄,沒有則插入一條記錄的狀況,在MySQL中進行存儲過程開發時若是單純的使用ROW_COUNT()函數可能會出現錯誤。