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()函数可能会出现错误。

©著作权归作者所有:来自51CTO博客作者yubowei的原创作品,如需转载,请注明出处,否则将追究法律责任

mysql 存储过程 rowcount_ORACLE中的SQL%ROWCOUNT与MySQL中的ROW_COUNT()的一点异同相关推荐

  1. mysql sql rowcount_ORACLE中的SQL%ROWCOUNT与MySQL中的ROW_COUNT()的一点异同-阿里云开发者社区...

    MySQL的ROW_COUNT()和ORACLE中的SQL%ROWCOUNT函数作用并不完全相同.从作用上来说,两者都是返回前一个SQL进行UPDATE,DELETE,INSERT操作所影响的行数,但 ...

  2. 写MySQL存储过程实现动态执行SQL

    写MySQL存储过程实现动态执行SQL --存储过程名和参数,参数中in表示传入参数,out标示传出参数,inout表示传入传出参数create procedure p_procedurecode(i ...

  3. cockroachdb mysql_CockroachDB学习笔记——[译]CockroachDB中的SQL:映射表中数据到键值存储...

    CockroachDB学习笔记--[译]CockroachDB中的SQL:映射表中数据到键值存储 原文标题:SQL in CockroachDB: Mapping Table Data to Key- ...

  4. oracle存储过程rowcount用法,oracle中的sql%rowcount,sql%found、sql%notfound、sql%rowcount和sql%isopen...

    sql%rowcount用于记录修改的条数,就如你在sqlplus下执行delete from之后提示已删除xx行一样,这个参数必须要在一个修改语句和commit之间放置,否则你就得不到正确的修改行数 ...

  5. oracle中的sql%rowcount,sql%found、sql%notfound、sql%rowcount和sql%isopen

    Oracle 存储过程 删除表记录时删除不存在的记录也是显示删除成功 create or replace procedure delDept(p_deptno in dept.deptno%type) ...

  6. mysql存储过程是不是不能穿sql语句_mysql存储过程能不能直接执行拼接的sql语句...

    展开全部 当然可以,就是在mysql存储过程中使用动态sql,就可以拼接sql,然62616964757a686964616fe58685e5aeb931333361323562后执行了. 给你复制一 ...

  7. ibatis mysql存储过程_分步详解 如何在iBatis中调用存储过程

    通过iBatis我们可以在数据库表中执行内嵌的insert , delete, update SQL命令.本文中你将看到如何在iBatis中调用存储过程. 我们使用MySQL数据库,并且使用和上一个例 ...

  8. oracle中的sql%rowcount

    sql%rowcount中的sql是oracle的内部游标,rowcount的意思是之前的dml sql语句影响的多少行数据. 如果是delete操作rowcount就是delete的数据,如果是in ...

  9. SQL中的sql%rowcount

    sql%rowcount 的作用:记录修改的条数,当你进行删除,更新操作的时候,可以提示已删除\更新的行数,这个参数放在修改语句和commit之间 例如: SQL> declare v_coun ...

最新文章

  1. Egret学习笔记 (Egret打飞机-3.实现背景循环滚动)
  2. Http协议中的Content-Length属性
  3. 如何在PySide中使用qrc资源文件
  4. 同一进程中同一端口如何区分不同的Socket
  5. 怎么用记事本写java_如何用记事本写下第一个Java程序-Fun言
  6. C#网络版斗地主——出牌权限的传递
  7. Python时间戳与时间字符串互相转换实例代码
  8. 生物医学网络中的图嵌入:方法,应用和评估
  9. 天下手游一直显示连接服务器,《天下手游》4月11日合服公告
  10. 什么是:arguments
  11. scanf()函数的使用
  12. 惊!brat安装后进行标注-实战,并且通过一行代码自动标注为BIO格式,便于模型训练-and 错误解决
  13. Unity 0.Interactive Tutorials
  14. SSM前后端分离技术
  15. 比较好的免费英语口语学习网站
  16. MobileNet v1 和 v2
  17. FrameLayout实现霓虹灯效果
  18. Java 完美判断中文字符
  19. 人月神话的神话色彩 - Boehm的模型和数据分析
  20. 【.net core】Excel导入导出之Npoi.Mapper

热门文章

  1. 开拓新城 · 长沙 | 时速云签约马栏山视研院视频渲染超算云平台项目,携手推进我国视频产业跨越式创新发展
  2. wp8开发笔记之应用程序真机发布调试
  3. 走嵌入式方向,一定要软硬件都懂吗?
  4. BUUCTF-MD5强弱比较-MD5()的万能密码-tornado框架注入-中文电码
  5. 农村小学使用计算机新闻稿,科技圆梦 生活美好——2017年东边小学科技节活动报道...
  6. Scripting.FileSystemObject控件的用法
  7. 遇到问题时,如何跟客户沟通
  8. [ Jackson ] 简单使用
  9. 鲁大师10月新机流畅榜发布,中端机型反超旗舰?冠军是它
  10. 2022上海燕窝展|上海燕博会|滋补大会:新零售、新消费、新对接、新资源