注册
达梦DM8屏蔽关键字
技术分享/ 文章详情 /

达梦DM8屏蔽关键字

干煸牛蛙 2025/03/07 188 0 0

通过V$RESERVED_WORDS查看dm关键字
image.png

以关键字LIST为例,由于LIST是关键字,所以作为列的别名时sql会报语法分析错误。

SQL> select * from V$RESERVED_WORDS where keyword='LIST'; 行号 KEYWORD LENGTH RESERVED RES_SQL RES_PL RES_SCHEMA RES_VARIABLE RES_ALIAS RES_FIXED ---------- ------- ----------- -------- ------- ------ ---------- ------------ --------- --------- 1 LIST 4 Y Y Y N N N N 已用时间: 0.762(毫秒). 执行号:1401. SQL> select id LIST from t1; select id LIST from t1; select id LIST from t1; * 第 1 行, 第 22 列[LIST]附近出现错误[-2007]: 语法分析出错. 已用时间: 0.166(毫秒). 执行号:0.

Dm屏蔽关键字有两种方法

通过数据库参数EXCLUDE_RESERVED_WORDS屏蔽关键字

(不推荐,屏蔽关键字全局生效,有可能影响系统内部sql执行)

--设置EXCLUDE_RESERVED_WORDS值为LIST,并重启数据库使其生效 SQL> SP_SET_PARA_STRING_VALUE(2, 'EXCLUDE_RESERVED_WORDS','LIST'); DMSQL 过程已成功完成 已用时间: 8.807(毫秒). 执行号:1403. --EXCLUDE_RESERVED_WORDS生效后再查看V$RESERVED_WORDS中已经没有LIST了, SQL> select * from V$RESERVED_WORDS where keyword='LIST'; 未选定行 --LIST关键字被屏蔽,可以作为列名使用 已用时间: 0.546(毫秒). 执行号:401. SQL> select id LIST from t1; 行号 LIST ---------- ----------- 1 1 已用时间: 2.158(毫秒). 执行号:402.

通过客户端参数KEYWORDS来屏蔽关键字

  • 方法1:连接串里指定 jdbc:dm://ip:端口?KEYWORDS=(LIST)
  • 方法2:dm_svc.conf客户端配置文件里指定(Linux 平台下,此文件位置/etc/dm_svc.conf,其他详细介绍见《DM8系统管理员手册》)
[dmdba@DM ~]$ vi /etc/dm_svc.conf ##添加: KEYWORDS=(LIST) ##多个关键字以逗号隔离
[dmdba@DM ~]$ disql SYSDBA/SYSDBA 服务器[192.168.3.88:5236]:处于普通打开状态 登录使用时间 : 1.150(ms) disql V8 SQL> select id LIST from t1; 行号 LIST ---------- ----------- 1 1 已用时间: 1.806(毫秒). 执行号:600.
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服