首先我们要知道哪些是达梦的关键字?避免在数据库对象设计时使用
SQL> select * from V$RESERVED_WORDS where RESERVED='Y' and KEYWORD='TOP';
行号 KEYWORD LENGTH RESERVED RES_SQL RES_PL RES_SCHEMA RES_VARIABLE RES_ALIAS RES_FIXED
---------- ------- ----------- -------- ------- ------ ---------- ------------ --------- ---------
1 TOP 3 Y Y Y N N N N
如果非要使用这些关键字,方法有以下四种:
以下以有使用关键字percent和top为例
select "percent","top" from tt;
注意:如果需要屏蔽的关键字属于SQL中的常用子句的关键字,不建议使用除添加双引号外的其他方式进行屏蔽。
url连接字符串添加 keywords=(屏蔽的关键字, 屏蔽的关键字)
jdbc:dm://192.168.80.133:5236/DAMENG?keywords=(percent, top)
修改/etc/dm_svc.conf文件,在全局部分或者局部服务名后面添加【多个需屏蔽的关键字之间用逗号隔开】
注意:若全局和局部均进行了关键字屏蔽配置,则最终生效的被屏蔽关键字为全局+局部
**keywords= percent,top
范例:
DM1=(192.168.80.133:5237)
TIME_ZONE=(480)
LANGUAGE=(cn)
KEYWORDS=(percent,top) #全局
[DM1]
TIME_ZONE=(480)
LANGUAGE=(cn)
KEYWORDS=(percent,top) #局部
重启应用生效
不建议这样处理,可能引起其它异常
方式1:直接修改dm.ini 配置文件中的EXCLUDE_RESERVED_WORDS参数
注意:多个需屏蔽的关键字之间用逗号隔开
EXCLUDE_RESERVED_WORDS=屏蔽的关键字, 屏蔽的关键字
方式2:disql进入数据库实例,执行以下命令:
sp_set_para_string_value(2,'EXCLUDE_RESERVED_WORDS','percent,top');
重启数据库服务生效
问题:IDENTITY关键字屏蔽后无法使用自增列
具体描述:修改数据库dm.ini中参数EXCLUDE_RESERVED_WORDS、配置客户端dm_svc.conf文件,添加KEYWORDS配置项
这两种屏蔽关键字的方法都会使自增列无法使用
正确的处理方式:这种情况不建议使用除添加双引号外的其他方式进行屏蔽。
文章
阅读量
获赞