oracle 更新语句不生效,Oracle存储过程执行update语句不报错不生效问题
转载链接: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语句不报错不生效问题相关推荐
- Oracle执行UPDATE语句的步骤
执行UPDATE语句的步骤: 如果数据和回滚数据不在数据库高速缓冲区中,则Oracle服务器进程将把它们从数据文件中读到数据库高速缓冲区中. Oracle服务器进程在要修改的数据行上加锁(行一级的锁, ...
- oracle执行update语句卡死
oracle执行update语句卡死 问题:当在plsql上执行update语句时,一直在显示正在执行中,很久不出结果.执行select语句或者是其他表的update语句时,可以正常执行 原因:只有u ...
- mysql update语句卡死_oracle执行update语句时卡住问题分析及解决办法
问题 开发的时候debug到一条update的sql语句时程序就不动了,然后我就在plsql上试了一下,发现plsql一直在显示正在执行,等了好久也不出结果.但是奇怪的是执行其他的select语句却是 ...
- ef 执行mysql语句_在EF中执行SQL语句
一.为什么要在EF中执行SQL语句 使用EF操作数据库,可以避免写SQL语句,完成使用Linq实现,但为什么还要在EF中执行SQL语句呢.如果要写SQL语句,完全可以使用ADO.NET来操作数据库.这 ...
- 执行update语句,用没用到索引,区别大吗?
前言: 我们都知道,当执行 select 查询语句时,用没用到索引区别是很大的,若没用到索引,一条 select 语句可能执行好几秒或更久,若使用到索引则可能瞬间完成.那么当执行 update 语句时 ...
- 执行update语句,返回受影响行数为0的几种情况
首先我们都很清楚执行update语句,返回的结果是受影响的行数这是要先说的, 其次本人遇到执行update语句返回0的情况有两种 1.Update的sql语句中的where条件不成立时,返回结果是0 ...
- 关于Access数据库执行Update语句后,不报错,但影响行数总是返回0的问题
最近碰到一个奇怪的问题,使用Access数据库执行Update语句后,不报错,但影响行数总是返回0. 因为是第一次碰到这个问题,纠结了半天.后来在网上搜索得到解决方案: SQL语句传参数的顺序和语句中 ...
- jdbc中mySQL语句单双引号_JDBC: 执行MySQL语句时,bit类型的数值在java代码中应该怎么表示?...
目录 Window's Note 记录自己在实际操作中用到的问题以及最后的解决方案 前提描述 注册页面用户填写信息后需要执行insert()方法向数据库中插入新用户的信息,需要插入的用户信息变量在数据 ...
- Oracle EBS 销售订单发运后连接行程停靠站请求报错导致物料未出库,但单销售行已关闭并进入开票接口
Oracle EBS 销售订单发运后连接行程停靠站请求报错导致物料未出库,但单销售行已关闭并进入开票接口 在开发销售订单发运的程序时碰到如图所示的错误: 在分析一波可能出现的问题后定位到销售订单类型中 ...
最新文章
- 说说.net事件和委托。
- 2020-12-11 Python中的 if __name__ == “__main__“
- C/C++语言可变参数表深层探索
- 工业4.0技术路线图 - OPC UA
- 从CES 2017看今年智能汽车发展趋势之三:智能座舱异军突起
- 选择 SAP Spartacus 作为 SAP Commerce Cloud Storefront 实现框架的五个理由
- PHP 电子商城基本数据表
- C#趣味程序---求两个数的最大公约数和最小公倍数
- google账号解除游戏绑定_附方法!关于物联卡手机号的绑定与解绑
- JsSIP 注册,拨打填坑
- Docker 方式 MySQL 主从搭建
- 190330每日一句
- 物联计算机大赛,计算机与物联网学院在本次计算机设计大赛中喜获佳绩
- GitLab 设置为中文版
- Mathematica解方程
- 常用的maven命令
- lyapunov直接法
- java信徒齐(七)步走
- C语言程序设计教程 北京邮电,C语言程序设计教程(第3版)/ 杨路明 9787563543403 北京邮电...
- Graph Convolutional Neural Networks for Web-Scale Recommender Systems(用于Web级推荐系统的图形卷积神经网络)
热门文章
- html评论中星星点亮的效果jquery代码
- 苹果cmsV10x在线视频网站源码
- 【AI每日播报】各家争相发布手机AI,都说自己是“全球首个”
- 在 GitChat 上赚钱的 6 种方法
- 由spark.sql.shuffle.partitions混洗分区浅谈下spark的分区
- 针对低功率/低电源电压应用的5MBd数字光耦合器
- cd-hit 转录本聚类
- 【仓储货架使用时长】影响仓储仓库货架使用寿命的主要因素有哪些?
- python网络安全毕业设计_基于Python的网络爬虫系统的设计与实现
- Scala之小括号和花括号(Parentheses Crurly Braces)