我在用jsp和delphi时都遇到了这个问题,当我通过select * from 得到的查询结果,却无法分析出列名,即便是单一的select * from 实际的表的名字 也是不行,所以我怀疑数据库执行select * from 和 select f1,f1,...直到全列出 from 表 是不一样的,中间不知有什么区别导致了程序无法分析列名,尽管在数据库中执行查询操作都正常,这也打破了我之前的认为:数据库中执行的查询和程序中执行的查询是一样的

解决方案 »

  1.   

    首先说明一下,数据库中执行的查询和程序中执行的查询是一样的,都是通过OCI之类的接口或JDBC接口把命令发给数据库,之所以出现不能解析列名的情况我也遇到过。原因是:
      数据库中的一些数据类型在开发语言中不支持。比如,ORACLE的复合数据类型和自定义数据类型。这时就需要耐心一点一点地通过系统表来分析了,把分析出来的结果再发到数据库端就可以返回正确的结果。
      

  2.   

    我觉得不是这样啊,我们公司基本上都用的varchar2,应该是字符串类型,而且只是对于这种非列出具体表名的查询才无法解析列名,甚至导致出错(比如wtc标签 的 <wtc:pubselect> 就解析不出列个数(当查询没有明确列名,比如sql可能是在数据库存好的,动态的)),不过你说的通过系统表分析,我觉得到可以试试,谢谢!