oracle 应用中遇到的问题
2009-09-25 14:22
246 查看
1、多表联合查询时,一定要对每一列指定表名(包括条件中的列
今天晚上易方达进行验收测试时,发现一个问题:打开开放式基金指令快速下达界面时,发生oracle错误,错误描述如下:
ORA-00918: 未明确定义列,详细信息见图ERR1.JPG。
错误的原因为:中间层(business/pm/func/ GetMonitorCmndData.java)写SQL语句时,部分列没有指定对应的表名。
此问题在公司的电脑上都不会发生(数据库包括:9i和10g),所以此问题特别隐蔽。
大家以后在先sql语句和存储过程时,一定要注意:
多表联合查询时,一定要对每一列指定表名(包括条件中的列)。
2、在查询语句的条件中尽量避免使用函数
在修改bug过程中,常发现一些查询语句的条件中出现函数的情况,如:DELETE FROM acc_balance
WHERE host_id = r_cell.cell_id
AND host_type = '1'
AND balance_date < fn_acc_PreNumDate(v_p_fundid,'0',v_accdate,5);
目的是为了删除超过5个交易日的数据,这里使用了我们自己写的函数 fn_acc_preNumDate,
在sql语句检索时,如果acc_balance表中有1万条数据要删除,则此删除语句会执行此函数至少1万次,导致无谓的耗时。
解决方法,如果fn_acc_preNumDate返回的数据一直不改变,则可以讲其赋值给变量。通过变量去执行sql语句。
如:
v_preNumDate := fn_acc_PreNumDate(v_p_fundid,'0',v_accdate,5);
DELETE FROM acc_balance
WHERE host_id = r_cell.cell_id
AND host_type = '1'
--AND balance_date < fn_acc_PreNumDate(v_p_fundid,'0',v_accdate,5);
AND balance_date < v_preNumDate;
这样fn_acc_prenumdate函数只需要执行一次即可达到删除数据目的。
各位同事如果碰到这种情况,可以将其更改一下。提升运行效率。
查询中避免使用to_date函数
如果把一个日期字符串转换为日期格式,比如日期字符串是’2009-01-01 11:21’,用to_date函数转换为 ‘yyyy-mm-dd’格式的日期会出错!参考图
系统中存在问题地方:
QueryReckonData case 22:交易员指令执行情况查询(交易所)
lsStrBuf.append(" c.simple_name as fund_name,d.group_name,e.cell_name,to_date(a.cmnd_date,'yyyy-mm-dd') as cmnd_time,");
因为系统中的指令日期cmnd_date确实存在’2009-01-01 11:21’格式的数据,所以转换就会出错!
相关文章推荐
- 应用ORACLE的时候可能会遇到很多看起来不难的问题
- 朋友在.net下开发ORACLE的应用遇到问题转个帖子给他看看
- 总结Java+Oracle应用开发的常遇到几个问题
- Oracle Intelligent Agent Executable遇到一个问题
- 为安卓应用添加手势密码功能,遇到的一些问题以及解决方法
- BigDecimal在实际项目的应用及遇到的问题
- linux as4 安装oracle 10g r2 时,我遇到的问题
- 时隔很久,要重新开始编程。今天试了下从头开始在ORACLE中建用户记录下遇到的问题,以备将来可查。
- 开发过程中遇到的问题1--------我们的mysql的查询语句时自己写的,没有用oracle的nextvalue函数。所以这里涉及到了并发的问题。
- 使用Oracle中fileopen命令加载文件时遇到的怪问题
- linux oracle jdbc遇到的问题记录
- 使用heroku开发应用时连接数据库遇到的问题及解决方案
- jenkins自动化构建iOS应用配置过程中遇到的问题
- Navicat Premium连接Oracle遇到的一些问题和其解决方法
- Navicat Premium连接Oracle遇到的一些问题和其解决方法
- Oracle Linux(64位)安装64位Oracle 11g遇到ins_ctx.mk问题
- Terminal(终端)中代理的配置---Linux应用中遇到的问题笔记
- 使用Intellij Idea开发Spark应用遇到的问题
- 解决执行Oracle控制脚本时遇到的 “cat: /etc/oratab: 没有那个文件或目录”的问题
- 【极客学院】-python学习笔记-3-单线程爬虫 (request安装遇到问题及解决,应用requests提取信息)