ORACLE中的SQL%ROWCOUNT与MySQL中的ROW_COUNT()的一点异同

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()函数可能会出现错误。
相关文章
相关标签/搜索