IMZRH的日志

努力成为一个有用的人

导航

奇怪的"未明确定义列”错误

Posted on 2008-08-04 15:46  张荣华  阅读(4600)  评论(0编辑  收藏  举报

 最近项目中遇到了一个问题,就是返回的数据量很大,有时用户查询时,会返回10W条以上的数据,所以我想到了先建视图,然后在视图的基础上利用Oracle分页存储过程来只加载当前页的数据,这样可以显著的提高查询速度。

 但是在实现功能时,却遇到了一个问题。我在页面绑定时,执行语句先得到页面共有多少条记录,语句如下:

 

select count(*as Total from VIEW_EQUIPMENTINFO  where  EI_SBZT='06'

 但是却报”未明确定义列"的错误,没道理啊,一般报这个错,都是因为多表关联时,列名不惟一,可是我是对视图进行查询,并且视图中的每一个列都不重名啊。困扰了挺长时间后,终于找到了原因,原来是我在创建视图时,没有明确指明名,我是这创建视图的代码:


CREATE OR REPLACE  VIEW EIMS.VIEW_EQUIPMENTINFO 
AS
SELECT * FROM EM_EQUIPMENTINFO
                            
left join  EM_EIREFERORGCODE on EM_EIREFERORGCODE.EIO_SBBSH = EM_EQUIPMENTINFO.EI_SBBSH 
                            
left join EM_FLEXIBLEFIELDS on EM_FLEXIBLEFIELDS.FF_SBBSH = EM_EQUIPMENTINFO.EI_SBBSH
GO

上面的代码是不对的,导致标题中说的问题,将视图创建语句改为如下形式后,问题解决,但是没有找到问题的根本原因:


CREATE  OR  REPLACE VIEW EIMS.VIEW_EQUIPMENTINFO 
AS
SELECT EI_GUID, EI_SBBSH, EI_TBNY, EI_JJDWMC, EI_EJDWMC, EI_SJDWMC, EI_SIJDWMC, EI_SBJB, EI_YJBS, EI_SBMC, EI_GGXH, EI_ZBH, EI_ZCBH, EI_SBLB, EI_JLDW, EI_CLPH, EI_DPBH, EI_FDJBH, EI_FDJXH, EI_NL, EI_NLDW, EI_JXFZXS, EI_DQFZXS, EI_NH, EI_NHDWZL, EI_ZGL, EI_GLDW, EI_CD, EI_KD, EI_GD, EI_ZL, EI_CJGB, EI_CJMC, EI_CCBH, EI_CCNY, EI_GHSGB, EI_GHSMC, EI_ZYDW, EI_AZDD, EI_TCNY, EI_XYNX, EI_YZ, EI_JZ, EI_NZJL, EI_LJZJ, EI_ZSSX, EI_SBZT, EI_BDSJ, EI_JMFDS, EI_DMFDS, EI_JSXN, EI_LRNY, EI_JSZK, EI_SYQK, EI_ZWHTS, EI_LJSYS, EI_ZKDSJ, EI_SKDW, EI_ZGZTJSJ, EI_ZXSGLS, EI_LJNYXH, EI_NHF, EI_XLDS, EI_WXZT, EI_YBZ, EIO_SBBSH, EIO_JJDWDM, EIO_EJDWDM, EIO_SJDWDM, EIO_SIJDWDM, EIO_JDDM, EIO_SBZT, FF_SBBSH, FF_SBLX, FF_ZSBBSH, FF_GSDH, FF_SGQY, FF_DHQK, FF_ZJDXSJ, FF_DXNR, FF_DWZZ, FF_BZ, FF_ACI_GUID   FROM EM_EQUIPMENTINFO
                            
left join  EM_EIREFERORGCODE on EM_EIREFERORGCODE.EIO_SBBSH = EM_EQUIPMENTINFO.EI_SBBSH 
                            
left join EM_FLEXIBLEFIELDS on EM_FLEXIBLEFIELDS.FF_SBBSH = EM_EQUIPMENTINFO.EI_SBBSH
GO