▲▲线程中用ADOQuery做聚组查询遇到ORA-00979 错误!

牧牛人软件 2005-07-13 09:10:19
=============================================
ORA-00979 not a GROUP BY expression

Cause: The GROUP BY clause does not contain all the expressions in the SELECT clause. SELECT expressions that are not included in a group function, such as AVG, COUNT, MAX, MIN, SUM, STDDEV, or VARIANCE, must be listed in the GROUP BY clause.
Action: Include in the GROUP BY clause all SELECT expressions that are not group function arguments.
==============================================

我的问题有点复杂,请您耐心,谢谢!

同时符合以下3个条件,我的程序就会出现ORA-00979错误!

1.SQL有含有DATABASE LINK NAME。
因为我的客户端程序是通过服务器A,间接访问服务器B的(因为服务器B安全性要求较高),服务器A用DATABASE LINK连接服务器B。

2.SQL用聚组函数SUM(),含有GROUP BY clause 。

3.在线程中查询
或者 主程序中查询,而且ADOQuery是临时NEW的:TADOQuery *ADOQuery=new TADOQuery(NULL);
===================================================================

示意代码:
TADOQuery *ADOQuery=new TADOQuery(NULL);

ADOQuery->ConnectionString=MainForm->ADOConnectionStr;

String SqlString="Select unit, sum(num) from p_user@DBLINK_B group by unit";
//▲▲如果SqlString中没有sum() 或者没有 @DBLINK_B,返回结果正常。

ADOQuery->SQL->Add(SqlString);

ADOQuery->Open();
if(ADOQuery->Active){
ADOQuery->DisableControls();

while(!ADOQuery->Eof )
ShowMessage ( ADOQuery->FieldByName( "unit" )->AsString );
ADOQuery->Next();
}
=======================================
我需要有多线程查询,这个问题太棘手!!

您有好的建议吗?谢谢!!

...全文
185 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
huanyi 2005-12-27
  • 打赏
  • 举报
回复
可能和在多线程的环境中有关系,呵呵
支持一下
牧牛人软件 2005-07-14
  • 打赏
  • 举报
回复
songhtao(三十年孤独):

出现问题我首先考虑SQL是否正确,我用GOLDEN测试SQL语句没有问题。

请各位发言!
我不懂电脑 2005-07-14
  • 打赏
  • 举报
回复
先用sqlplus执行sql语句看看如果有问题就可能是sql语句出了些毛病。

4,012

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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