目前我需要用 C# 写一个访问 oracle 数据库的页面,数据库是 7.3 版,字符集是 us7ascii,为了能正确显示汉字,我只有选择用 OLEDB 连续数据库。但现在问题来了:OLEDB 连接数据库后,SQL 中使用 rownum 会报错无效列名。同样的语句我用 OracleClient 方式连接就能成功执行,但这样汉字又不能正常显示。跪求高手指点:如何在 OLEDB 下使用 rownum ? 或如何用 OracleClient 正确显示汉字?小弟没分,请大大们不吝赐教,拜谢!

解决方案 »

  1.   

    1. 你可以在sql语句中把rownum 起个别名看看。实在不行再套一层查询。
    2.不是太了解。
      

  2.   

    起别名刚试了,错误依旧。再套一层查询具体是什么意思呢?我的 SQL 语句类似这样:SELECT * FROM <TABLE_NAME> WHERE ROWNUM < 10
      

  3.   

    套一层:
    SELECT * FROM
    (SELECT * FROM <TABLE_NAME> WHERE ROWNUM < 10) a
      

  4.   


    oracle中rowid和rownum简介
      

  5.   

    列如:  select nm from (select id,name, rownum as nm from tab where rownum<=10)
      

  6.   

    谢谢楼上各位的回复。我的问题的关键是:用 OleDB 方式连接 Oracle 数据库,SQL 中只要出现 rownum 就报错“无效列名”,不论 rownum 在 SQL 的什么地方。现在我初步认为,OleDB 不支持 Oracle 的伪列。这个问题应怎么解决?谢谢!
      

  7.   

    变通一下嘛
    你可以建个视图的。比如
    create view view_test as select column1,column2,...,rownum row 
    from <TABLE_NAME> ;
    这样,你就可以在OLEDB 下 连接 view_test这个视图就可以啦。