一条update语句,更新多个列,出现部分成功部分失败的问题
2016-10-19 18:31
246 查看
数据库:ORACLE
问题描述:一条UPDATE语句,更新四个列A,B,C,D,在PL/SQL里面执行正常,但是放在ODI里面,用jython组织语句,在linux服务器上用ksh定时执行该条语句的时候,碰到了问题——只有一条数据,但是B,C,D三个列上的数据更新成功,A列更新不成功。没有多对多,只有一条数据,而且A列是更新为常量9。另外发现,更新不是9的常量,比如5,就可以更新成功。
解决方法:将SQL语句,全部改为大写,给被更新的表加上别名。
原来的SQL:UPDATE temp_0918 set num=9,NAME='ABC',SEX='MAN' where num = 3;
正确的SQL:UPDATE TEMP_0918 T SET T.NUM = 9 ,NAME = 'ABC',SEX='MAN' WHERE NUM = 3;
思考:希望有高手帮忙解释一下,上面的两个问题,是如何发生的,是变量的作用域问题吗?可我是在for循环里面,39条数据依次执行UPDATE,而且每次update的connect都关闭了,为何会四个列,只成功三个,失败一个呢??这是最让我百思不得其解的地方。
问题描述:一条UPDATE语句,更新四个列A,B,C,D,在PL/SQL里面执行正常,但是放在ODI里面,用jython组织语句,在linux服务器上用ksh定时执行该条语句的时候,碰到了问题——只有一条数据,但是B,C,D三个列上的数据更新成功,A列更新不成功。没有多对多,只有一条数据,而且A列是更新为常量9。另外发现,更新不是9的常量,比如5,就可以更新成功。
解决方法:将SQL语句,全部改为大写,给被更新的表加上别名。
原来的SQL:UPDATE temp_0918 set num=9,NAME='ABC',SEX='MAN' where num = 3;
正确的SQL:UPDATE TEMP_0918 T SET T.NUM = 9 ,NAME = 'ABC',SEX='MAN' WHERE NUM = 3;
思考:希望有高手帮忙解释一下,上面的两个问题,是如何发生的,是变量的作用域问题吗?可我是在for循环里面,39条数据依次执行UPDATE,而且每次update的connect都关闭了,为何会四个列,只成功三个,失败一个呢??这是最让我百思不得其解的地方。
相关文章推荐
- orcl sql语句笔记(select成功,update/delete/insert失败问题)
- [VB.NET]再求一条SQL语句更新问题
- hibernate“update”语句执行成功数据库却没有更新成功
- android自动更新程序,安装完以后就什么都没有了,没有出现安装成功的界面的问题
- Tomcat部署应用,客户端阻止cookie时,成功登录后,还是出现登录失败的问题解决
- hibernate 级联删除报更新失败的问题(org.hibernate.exception.GenericJDBCException: Could not execute JDBC batch update)
- 用一Update语句更新使用多表的问题
- android自动更新程序,安装完以后就什么都没有了,没有出现安装成功的界面的问题
- C#语句对Access中数据更新问题――Update语法错误
- android自动更新程序,安装完以后就什么都没有了,没有出现安装成功的界面的问题
- 解决ubuntu update出现载入软件包列表失败问题(E:Encountered a section with no Package: header, E:Problem with MergeL)
- 解决XP操作系统系统升级(补丁更新)后出现的文件夹无法删除的问题(support、update)
- Mysql中,update语句引起的时间戳自动更新问题
- 网上下载天气预报源码,出现天气更新失败问题 的解决办法
- .net 事务问题,执行多条更新语句,如果有一条出异常,全部回滚
- 解决在Access中参数化SQL语句更新数据库失败的问题
- 某应用出现启动后集群中部分node成功,部分node失败
- 遇到的问题------数据库 update 语句出现错误的解决方法
- vs 2012 更新update4 后出现问题
- ubuntu 源更新失败问题(sudo apt-get update)