达梦屏蔽数据库关键字

背景

有时我们执行的SQL语句正确,但是系统仍然提示语法错误。

这时我们需要考虑是不是因为存在关键字导致的误判,通过设置屏蔽关键字的参数,可以将其取消掉。

 

 

报错示例

例如:创建自定义类型明明没有错误,但是就是出现语法错误:

CREATE TYPE GOO IS OBJECT(ID NUMBER);


 

                                             

 

 

于是自己又重新建了一个实例来测试,结果却创建成功:

 


分析是数据库某项参数配置有问题,

于是查看《DM8系统管理员手册》发现的确有屏蔽关键字的参数:



于是在之前报错的环境上查看此参数:

SELECT * FROM "V$DM_INI" WHERE PARA_NAME LIKE 'EXCLUDE_RESERVED_WORDS';

 

果然,由于已将【TYPE】设为关键字,因此会报错。

 


解决办法

方法1:去除掉该关键字

 

但是要考虑:如果把该关键字TYPE去除掉,其他SQL是否会受影响。

确认可以取消该关键字的话,执行如下:

SF_SET_SYSTEM_PARA_VALUE('EXCLUDE_RESERVED_WORDS','',1,2);

 

 

由于该参数是静态参数,重启数据库后生效;

 

 

 

方法2:在dm_svc.config里面配置

(必须修改应用服务器上的这个文件)

vi /etc/dm_svc.config

 

TIME_ZONE=(480)

LANGUAGE=(cn)

DM=(10.10.11.11:5236)

KEYWORDS= TYPE

 


请使用浏览器的分享功能分享到微信等