请教高手一个问题(急)!!!!!!!!!!!!!!!!!!

蓝点天尊 2006-07-21 12:08:49
我在写一个Oracle查询时其中有个嵌套查询,我在Oracle9i中能执行通过,但当我用OracleDataAdapter,查询时死活都通不过去,这个子查询语句是这样的:
SELECT * FROM (select * from mytest.cjb where chinese>70) 
查询代码如下:
.....
string _sqlStr = "SELECT * FROM (select * from mytest.cjb where chinese>70)";
OracleDataAdapter _objAdapter = new OracleDataAdapter_sqlStr, _objConn);
_objAdapter.TableMappings.Add("Table", "test");
_objAdapter.MissingSchemaAction = System.Data.MissingSchemaAction.AddWithKey; _objAdapter.Fill(_table);
系统总是提示:应为标识符或带引号的标识符
请教同行,这个嵌套查询在Net中应该怎么写才正常?
...全文
347 24 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
蓝点天尊 2006-07-21
  • 打赏
  • 举报
回复
不行啊,兄弟,这个东西我早试过了
Knight94 2006-07-21
  • 打赏
  • 举报
回复
Work as follows:
1.change
SELECT * FROM (select * from mytest.cjb where chinese>70) 
with
SELECT * FROM (select * from mytest.cjb where chinese>70) as tempcjb

2.change
_objAdapter.TableMappings.Add("Table", "test");
with
_objAdapter.TableMappings.Add("tempcjb", "test");
湖中仙人 2006-07-21
  • 打赏
  • 举报
回复
oracle,不会
蓝点天尊 2006-07-21
  • 打赏
  • 举报
回复
不行早试过了,我从昨晚12:00试到早上5:00
cscer 2006-07-21
  • 打赏
  • 举报
回复
试试这样写可以吗

SELECT * FROM (select * from mytest.cjb where "chinese">70) a
智商无下限 2006-07-21
  • 打赏
  • 举报
回复
大家帮帮忙:
http://community.csdn.net/Expert/topic/4894/4894864.xml?temp=.480221
蓝点天尊 2006-07-21
  • 打赏
  • 举报
回复
up
蓝点天尊 2006-07-21
  • 打赏
  • 举报
回复
up
蓝点天尊 2006-07-21
  • 打赏
  • 举报
回复
up
hmilyice 2006-07-21
  • 打赏
  • 举报
回复
原来如此,
我是断章取义了呵呵
蓝点天尊 2006-07-21
  • 打赏
  • 举报
回复
用户和表空间是一样的,都是mytest,但是不是这个问题,因为直接写个不嵌套的SQL都能查询出来
bzszp 2006-07-21
  • 打赏
  • 举报
回复
在oracle里面没有问题,不能说明在程序中没有问题
试一下吧

那个肯定是用户,而不是表空间。
conn system/manager
select * from all_users看看有没有这个用户就清楚了。
蓝点天尊 2006-07-21
  • 打赏
  • 举报
回复
这个代码是这样的了,
....
string _resultSQL = "SELECT * FROM (SELECT PageTempTableXXXX.*, ROWNUM RecordNO FROM ({0}) PageTempTableXXXX ) WHERE RecordNO>{1} AND RecordNO<{2}";
_resultSQL = string.Format(_resultSQL, _sqlStr, _startIndex.ToString(), _endIndex.ToString());
其中_sqlStr,是外面传进来的,然后
用一个三层嵌套来分页,在hiberate中也是用这种方法来分页的,但是我发现嵌套有问题,所以就改为测试
SELECT * FROM (select * from mytest.cjb where chinese>70)如果这个语句能通过上面的哪个正式代码就没问题。但是oracle9i中表前面要加表空间,很可能是表空间的问题,我记得我以行前一个项目中也用过Oracle,就可以不加表空间。
hmilyice 2006-07-21
  • 打赏
  • 举报
回复
我没有别的意思,就是想学习一下,请楼主见谅

照我的理解
select * from (select * from dept where rownum<3)
就是把(select * from dept where rownum<3)全部返回来嘛
蓝点天尊 2006-07-21
  • 打赏
  • 举报
回复
当然不一样,如果不嵌套都能完成,我还试这种嵌套做什么呢?
hmilyice 2006-07-21
  • 打赏
  • 举报
回复
即使那么写没问题也是多此一举,
对"Select * From"来说不嵌套和嵌套得到的因该是一样的吧
蓝点天尊 2006-07-21
  • 打赏
  • 举报
回复
不是没权限了,这个语句在ORACLE中没问题,能执行通过但用OracleDataAdapter来就不行
bzszp 2006-07-21
  • 打赏
  • 举报
回复
mytest应该是oracle的用户名吧
确认有访问的权限?

try:
sql*plus:
conn mytest/password
grant select on cjb to yourconnectusername;
蓝点天尊 2006-07-21
  • 打赏
  • 举报
回复
我是在写一个分页查询的通用代码,就在这里卡住了,里面要用到嵌套查询,不是说就这么简单
bzszp 2006-07-21
  • 打赏
  • 举报
回复
我这样写没有问题。

if (OpenCon())
{
OracleCommand ocmd = new OracleCommand("select * from (select * from dept where rownum<3)", ocon);
OracleDataAdapter oda = new OracleDataAdapter(ocmd);
DataSet ds = new DataSet();
oda.Fill(ds);
MessageBox.Show(ds.Tables[0].Rows.Count.ToString());
}
加载更多回复(4)

111,093

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧