执行sql时报错如下:
有三种解决方法:
1.直接在查询中添加参数:/*+GROUP_OPT_FLAG(1)*/
select /*+GROUP_OPT_FLAG(1)*/* from DMHR.CITY GROUP BY CITY_NAME;
2.修改dm.ini参数GROUP_OPT_FLAG=1,使用sysdba用户修改,该参数属于动态会话级参数,不用重启数据库。但是需要注意该参数有默认值,先查下默认值是什么,然后再+1赋值。也可以直接执行命令:
sp_set_para_value(1,'GROUP_OPT_FLAG',1);
select para_name,para_value from v$dm_ini where para_name='GROUP_OPT_FLAG';
3.配置兼容参数COMPATIBLE_MODE=4,兼容mysql,该参数属于静态参数,需要重启数据库生效。
sp_set_para_value(1,'COMPATIBLE_MODE',4);
select para_name,para_value from v$dm_ini where para_name='COMPATIBLE_MODE';
备注:
COMPATIBLE_MODE
0:不兼容
1:兼容sql92标准
2:部分兼容oracle
3:部分兼容sql server
4:部分兼容mysql
5.兼容dm6
注意:
如果修改参数COMPATIBLE_MODE 的话需要重启数据库才能生效,
不然就只调整 sp_set_para_value(1,'GROUP_OPT_FLAG',1); 就行,该参数针对新的会话生效,如果要对当前会话生效的话,可以执行以下过程,让已存在的会话也生效。
begin
for i in (select sess_id ssid, sess_seq sseq from v$sessions )
loop
SP_SET_PARAM_IN_SESSION(i.ssid, i.sseq, 'GROUP_OPT_FLAG', 1);
end loop;
end;
达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台