背景:
应用中设计的表字段中有使用到达梦的关键字,导致执行sql报错怎么办?
首先我们要知道哪些是达梦的关键字?避免在数据库对象设计时使用
V$RESERVED_WORDS视图中RES_ERVED=Y的关键字为系统保留字,无法直接在SQL语句中使用。RES_FIXED=Y的保留字是不能屏蔽的,屏蔽会影响使用。
如果非要使用这些关键字,有什么办法,方法有以下四种:
以下以有使用关键字percent和top为例
1、 写sql 时通过双引号引起来
select “percent”,“top”
from tt;
2、 客户端连接字符串url中屏蔽掉
url连接字符串添加 keywords=(屏蔽的关键字, 屏蔽的关键字)
范例:
jdbc:dm://192.168.80.133:5236/DAMENG?keywords=(percent, top)
3、 客户端连接配置文件中屏蔽掉
修改/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) #局部
重启应用生效
4、 数据库服务端屏蔽掉【不建议这样处理,可能引起其它异常】
修改dm.ini 配置文件中的EXCLUDE_RESERVED_WORDS参数【多个需屏蔽的关键字之间用逗号隔开】
EXCLUDE_RESERVED_WORDS=屏蔽的关键字, 屏蔽的关键字
或者disql进入数据库实例,执行以下命令:
sp_set_para_string_value(2,‘EXCLUDE_RESERVED_WORDS’,‘percent,top’);
重启数据库服务生效
文章
阅读量
获赞