ADO 这样的sql语句报错。。。。。。。。。。。

mandarin 2009-12-24 03:20:42
用ADO执行这个语句报错:ORA-00937: 非单组分组函数
select max(length(a.right_name)) from tright a where a.type = '1';

我记得之前还是可以的,而且plsql里是没有问题的,不知道驱动变了还是什么环境变了会引起这个问题???
...全文
117 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
mandarin 2009-12-30
  • 打赏
  • 举报
回复
alter system set cursor_sharing =EXACT;

数据库的设置改过了,执行上面的语句就可以了,网上查了一下,好像和数据库的执行计划有关系,但还是不知道具体是怎么造成上述语句执行不通的??
Harryfin 2009-12-25
  • 打赏
  • 举报
回复
DAO 改为 DOA
Harryfin 2009-12-25
  • 打赏
  • 举报
回复
楼主试试换成DAO或者ODAC试试?SQL感觉是没问题的。

个人不是很推荐用ADO访问ORACLE
haitao 2009-12-24
  • 打赏
  • 举报
回复
哦,是oracle啊,还以为是mssql
haitao 2009-12-24
  • 打赏
  • 举报
回复
t-sql只有len,没有length的吧
kaikai_kk 2009-12-24
  • 打赏
  • 举报
回复
这样试试:

select max(A.kk) from
(select length(right_name) kk from tright where type = '1') as A
mandarin 2009-12-24
  • 打赏
  • 举报
回复
select max(length(a.right_name)) from tright a where a.type = '1';
这个plsql也是可以的,可用ado就不行
mandarin 2009-12-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zxf_feng 的回复:]
你在plsql下再执行下看看是不是报错。
[/Quote]
plsql下面没有问题
阿三 2009-12-24
  • 打赏
  • 举报
回复
你在plsql下再执行下看看是不是报错。
mandarin 2009-12-24
  • 打赏
  • 举报
回复
select max(length(a.right_name)) from tright a where a.type = '1' group by right_name;
报不是 GROUP BY 表达式.
但是去掉where条件就没有问题了,上面的句子应该没有错
ydlchina 2009-12-24
  • 打赏
  • 举报
回复
要求有 group by
bdmh 2009-12-24
  • 打赏
  • 举报
回复
加一个group by试试

2,495

社区成员

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

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