转载链接:http://lin49940.iteye.com/blog/466626

今天一个同事写oracle 的存储过程遇到了一个问题, 他在里面update 操作不能完成更新的操作, 但是又不会报错.

如一个表 A(id,code, name, type)

在存储过程中的更新操作的语句: update A x set x.type = 变量A where x.code = 变量B;

变量A 和 变量B 都定义好了, 并且都成功赋值了.

这是一个很简单的更新语句, 简单到一开始对为什么发生这样的错误不知所措. 其实出错的原因是在于 变量A 或 变量B 的定义上, 如:

creat or replace procedure p_AA

is

t_type varchar2(20);

codenumber(10);

begin

t_type := 'AA';

code := 100

update A x set x.type = t_type where x.code =code;

commit;

end;

执行成功, 但是update 操作没有成功, 没有报什么错误. 其实原因在于变量code跟 表A 中的字段code 的名字相同造成的. 看下面的:

creat or replace procedure p_AA

is

t_type varchar2(20);

t_codenumber(10);

begin

t_type := 'AA';

t_code:= 100

update A x set x.type = t_type where x.code =t_code;

commit;

end;

执行成功, update操作也成功. 所以原因在与变量的名称上面(还有一个值得注意的地方, 如果code字段是char型的, 变量的长度跟字段code的长度如果不一致, 比较会不成功,' 100' 和 '100' 是不对等的, 这也是容易犯的一个错误, 在此记录下)

还有一个地方要注意:

creat or replace procedure p_AA(codein number)--code作为参数, 就算跟表A 的字段名称一样, 也不会有影响

is

t_type varchar2(20);

begin

t_type := 'AA';

update A x set x.type = t_type where x.code =code;

commit;

end;

执行 execute p_AA(100) 成功, 更新操作也成功. code如果是参数, 跟表A 的字段名称一样, 也不会有影响.

我一般变量都会加t_ 或 p_, 所以以前没遇到这个问题, 为了防止以后可能再次遇到这个问题和也遇到这个问题的朋友, 在此留下这篇博客作为备忘.

小龙评论

平时很少写Oracle的存储过程,最近为了处理一批异常的数据,嫌写程序调试麻烦,就使用存储过程,遇到了相同问题,是变量名和要更新的表字段名相同了。

不报错,的确不方便找原因,转载备忘。

oracle 更新语句不生效,Oracle存储过程执行update语句不报错不生效问题相关推荐

  1. Oracle执行UPDATE语句的步骤

    执行UPDATE语句的步骤: 如果数据和回滚数据不在数据库高速缓冲区中,则Oracle服务器进程将把它们从数据文件中读到数据库高速缓冲区中. Oracle服务器进程在要修改的数据行上加锁(行一级的锁, ...

  2. oracle执行update语句卡死

    oracle执行update语句卡死 问题:当在plsql上执行update语句时,一直在显示正在执行中,很久不出结果.执行select语句或者是其他表的update语句时,可以正常执行 原因:只有u ...

  3. mysql update语句卡死_oracle执行update语句时卡住问题分析及解决办法

    问题 开发的时候debug到一条update的sql语句时程序就不动了,然后我就在plsql上试了一下,发现plsql一直在显示正在执行,等了好久也不出结果.但是奇怪的是执行其他的select语句却是 ...

  4. ef 执行mysql语句_在EF中执行SQL语句

    一.为什么要在EF中执行SQL语句 使用EF操作数据库,可以避免写SQL语句,完成使用Linq实现,但为什么还要在EF中执行SQL语句呢.如果要写SQL语句,完全可以使用ADO.NET来操作数据库.这 ...

  5. 执行update语句,用没用到索引,区别大吗?

    前言: 我们都知道,当执行 select 查询语句时,用没用到索引区别是很大的,若没用到索引,一条 select 语句可能执行好几秒或更久,若使用到索引则可能瞬间完成.那么当执行 update 语句时 ...

  6. 执行update语句,返回受影响行数为0的几种情况

    首先我们都很清楚执行update语句,返回的结果是受影响的行数这是要先说的, 其次本人遇到执行update语句返回0的情况有两种 1.Update的sql语句中的where条件不成立时,返回结果是0 ...

  7. 关于Access数据库执行Update语句后,不报错,但影响行数总是返回0的问题

    最近碰到一个奇怪的问题,使用Access数据库执行Update语句后,不报错,但影响行数总是返回0. 因为是第一次碰到这个问题,纠结了半天.后来在网上搜索得到解决方案: SQL语句传参数的顺序和语句中 ...

  8. jdbc中mySQL语句单双引号_JDBC: 执行MySQL语句时,bit类型的数值在java代码中应该怎么表示?...

    目录 Window's Note 记录自己在实际操作中用到的问题以及最后的解决方案 前提描述 注册页面用户填写信息后需要执行insert()方法向数据库中插入新用户的信息,需要插入的用户信息变量在数据 ...

  9. Oracle EBS 销售订单发运后连接行程停靠站请求报错导致物料未出库,但单销售行已关闭并进入开票接口

    Oracle EBS 销售订单发运后连接行程停靠站请求报错导致物料未出库,但单销售行已关闭并进入开票接口 在开发销售订单发运的程序时碰到如图所示的错误: 在分析一波可能出现的问题后定位到销售订单类型中 ...

最新文章

  1. 说说.net事件和委托。
  2. 2020-12-11 Python中的 if __name__ == “__main__“
  3. C/C++语言可变参数表深层探索
  4. 工业4.0技术路线图 - OPC UA
  5. 从CES 2017看今年智能汽车发展趋势之三:智能座舱异军突起
  6. 选择 SAP Spartacus 作为 SAP Commerce Cloud Storefront 实现框架的五个理由
  7. PHP 电子商城基本数据表
  8. C#趣味程序---求两个数的最大公约数和最小公倍数
  9. google账号解除游戏绑定_附方法!关于物联卡手机号的绑定与解绑
  10. JsSIP 注册,拨打填坑
  11. Docker 方式 MySQL 主从搭建
  12. 190330每日一句
  13. 物联计算机大赛,计算机与物联网学院在本次计算机设计大赛中喜获佳绩
  14. GitLab 设置为中文版
  15. Mathematica解方程
  16. 常用的maven命令
  17. lyapunov直接法
  18. java信徒齐(七)步走
  19. C语言程序设计教程 北京邮电,C语言程序设计教程(第3版)/ 杨路明 9787563543403 北京邮电...
  20. Graph Convolutional Neural Networks for Web-Scale Recommender Systems(用于Web级推荐系统的图形卷积神经网络)

热门文章

  1. html评论中星星点亮的效果jquery代码
  2. 苹果cmsV10x在线视频网站源码
  3. 【AI每日播报】各家争相发布手机AI,都说自己是“全球首个”
  4. 在 GitChat 上赚钱的 6 种方法
  5. 由spark.sql.shuffle.partitions混洗分区浅谈下spark的分区
  6. 针对低功率/低电源电压应用的5MBd数字光耦合器
  7. cd-hit 转录本聚类
  8. 【仓储货架使用时长】影响仓储仓库货架使用寿命的主要因素有哪些?
  9. python网络安全毕业设计_基于Python的网络爬虫系统的设计与实现
  10. Scala之小括号和花括号(Parentheses Crurly Braces)