达梦数据库屏蔽系统保留字的方法

本文介绍了如何在达梦数据库中处理系统保留字问题,包括修改dm.ini配置文件的EXCLUDE_RESERVED_WORDS参数和配置dm_svc.conf文件的KEYWORDS选项。通过示例展示了对可屏蔽与不可屏蔽保留字的处理方法,并提醒了屏蔽保留字可能带来的影响。建议优先修改SQL语句和对象名称,若必须屏蔽,推荐使用dm_svc.conf配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

  当在达梦数据库中创建表等对象时,对象名称使用一些单词时可能会遇到创建失败报错“语法分析错误”,这种情况有可能是遇到了使用的对象名为系统保留字的无法使用。针对这种情况,一般建议修改对象名为系统保留字之外的名称。如果是现有的系统上,一定要使用系统保留字,那么对于部分系统保留字(非所有)可以通过参数屏蔽的方式来处理。
达梦数据库中排除屏蔽系统保留字的方法有两种:
​  第一种:修改数据库dm.ini中参数EXCLUDE_RESERVED_WORDS
​  第二种:配置客户端dm_svc.conf文件,添加KEYWORDS配置项(推荐)

参数介绍

1、数据库配置文件dm.ini中EXCLUDE_RESERVED_WORDS参数

EXCLUDE_RESERVED_WORDS:语法解析时,需要去除的保留字列表,保留字之间以逗号分隔。默认为空,静态参数。

V$RESERVED_WORDS视图中RES_FIXED=N的关键字通过EXCLUDE_RESERVED_WORDS参数设置之后将会失效,V$RESERVED_WORDS视图不会再记录。

2、dm_svc.conf配置文件中KEYWORDS配置项

KEYWORDS:标识用户关键字,所有在列表中的字符串,如果以单词的形式出现在SQL语句中,则这个单词会被加上双引号。该配置项主要用来解决用户需要使用DM8中的保留字作为对象名使用的状况。

使用时需要注意,在dm_svc.conf文件中配置KEYWORDS时,KEYWORDS应配置在"服务配置区"中,不应直接配置到"全局配置区"。

3、V$RESERVED_WORDS视图

V$RESERVED_WORDS视图记录了数据库系统关键字的相关信息。视图字段含义如下(参考《DM8系统管理员手册》):

KEYWORD:关键字名字
LENGTH:关键字长度
RESERVED:是否是保留字
RES_SQL:是否是SQL保留字,不能作SQL中的标识符
RES_PL:是否是DMSQL程序保留字,不能作DMSQL程序语句块中的标识符
RES_SCHEMA:是否是模式保留字,不能作模式标识符
RES_VARIABLE:是否是变量保留字,不能作变量标识符
RES_ALIAS:是否是别名保留字,不能作别名标识符
RES_FIXED:关键字是否可以EXCLUDE,Y不可以,N可以

复制

注意:

V$RESERVED_WORDS视图中RESERVED=Y的关键字为系统保留字,无法直接在SQL语句中使用。RES_FIXED=Y的保留字是不能屏蔽的,屏蔽会影响使用。

在DM8 1-1-190版本中不能屏蔽的关键字有77个。

使用示例

环境说明

DB:DMV8 1-1-190版本

OS:KylinV10

测试关键字以PERCENT、ORDER为例。其中PERCENT为可排除关键字,ORDER为不可排除关键字。

确认关键字信息:

SQL> select * from v$reserved_words where keyword in ('PERCENT','ORDER');

行号     KEYWORD LENGTH      RESERVED RES_SQL RES_PL RES_SCHEMA RES_VARIABLE RES_ALIAS RES_FIXED
---------- ------- ----------- -------- ------- ------ ---------- ------------ --------- ---------
1          ORDER   5           Y        Y       Y      N          N            N         Y          
2          PERCENT 7           Y        Y       Y      N          N            N         N

复制

第一种方法:修改dm.ini中EXCLUDE_RESERVED_WORDS参数

(1)创建两张表包含测试的关键字(直接使用保留字作为列名)

SQL> create table A (PERCENT VARCHAR(10));
create table A (PERCENT VARCHAR(10));

create table A (PERCENT VARCHAR(10));
                                  *  
第 1 行, 第 35 列[PERCENT]附近出现错误[-2007]:
语法分析出错.
已用时间: 0.459(毫秒). 执行号:0.
SQL> create table B (ORDER VARCHAR(10));
create table B (ORDER VARCHAR(10));

create table B (ORDER VARCHAR(10));
                                *  
第 1 行, 第 33 列[ORDER]附近出现错误[-2007]:
语法分析出错.
已用时间: 0.323(毫秒). 执行号:0.
SQL> 

复制

(2)修改dm.ini中EXCLUDE_RESERVED_WORDS参数

​ 修改后参数为:EXCLUDE_RESERVED_WORDS =PERCENT,ORDER

​ 重启数据库。

(3)创建测试表

SQL> create table A (PERCENT VARCHAR(10));
操作已执行
已用时间: 16.635(毫秒). 执行号:400.
SQL> create table B (ORDER VARCHAR(10));
create table B (ORDER VARCHAR(10));

create table B (ORDER VARCHAR(10));
                                *  
第 1 行, 第 33 列[ORDER]附近出现错误[-2007]:
语法分析出错.
已用时间: 0.409(毫秒). 执行号:0.

复制

通过测试可以发现对于RES_FIXED=Y的保留字,修改dm.ini中EXCLUDE_RESERVED_WORDS参数是无法屏蔽的,对RES_FIXED=N的保留字可以屏蔽。

其余的RES_FIXED=Y的保留字也可以多测试几个。

第二种方法:配置dm_svc.conf文件,添加KEYWORDS配置项

(1)在客户端机器上配置dm_svc.conf文件,添加KEYWORDS配置项

dm_svc.conf 配置如下:

# 全局配置区
TIME_ZONE=(480)
LANGUAGE=(cn)
DB1=(192.168.15.35:5236)

[DB1] 
# 服务配置区
KEYWORDS=PERCENT,ORDER

复制

dm_svc.conf文件在不同平台上的存放路径可以参考《DM8系统管理员手册》。

针对数据库的配置最好是添加在“服务配置区”中,避免存在其他数据库的情况下影响到其他数据库,而且通过配置dm_svc.conf服务名对应用程序更方便。

(2)使用配置的服务名连接

管理工具登录:

创建测试表,均创建成功:

SQL> desc AA;                                             

行号     NAME    TYPE$       NULLABLE
---------- ------- ----------- --------
1          PERCENT VARCHAR(10) Y

已用时间: 31.550(毫秒). 执行号:1200.
SQL> desc BB;

行号     NAME  TYPE$       NULLABLE
---------- ----- ----------- --------
1          ORDER VARCHAR(10) Y

已用时间: 13.170(毫秒). 执行号:1201.

复制

通过测试可以发现对于RES_FIXED=Y的保留字,dm_svc.conf也可以进行屏蔽,但是屏蔽之后可能会导致使用上的问题。

(3)dm_svc.conf屏蔽RES_FIXED=Y的保留字会导致的问题

以ORDER为例:

通过dm_svc.conf屏蔽后,使用dm_svc.conf进行连接的程序,将无法使用数据库中自带的包含单独的order单词的函数等,将会导致程序功能异常。

比如order by等将无法使用:

比如管理工具等程序部分功能出现异常:

**注意:**通过dm_svc.conf对保留字进行屏蔽,只影响通过dm_svc.conf进行连接的应用程序,不使用dm_svc.conf不会影响。如下图演示:

总结

(1)对于有使用到系统关键字保留字的所有SQL语句和对象名称,最优选是修改SQL语句和对象名称;

(2)对于必须需要数据库进行屏蔽的关键字,建议使用dm_svc.conf文件进行屏蔽,尽量减少影响;

(3)RES_FIXED=Y的保留字是不能屏蔽的,屏蔽之后会影响使用;

(4)如果对象名称加上双引号,即使对象名称是未屏蔽的保留字,对象也可以创建成功。但是在该对象名称上使用SQL语句时,也需要给对象名称加上双引号。

(5)更多资讯请上达梦技术社区了解:https://eco.dameng.com

第1章结构化查询语言DM_SQL简介 ................................................................................................. 1 1.1 DM_SQL语言的特点 ................................................................................................................. 1 1.2 保留字与标识符 ........................................................................................................................ 2 1.3 DM_SQL语言的功能及语句 ..................................................................................................... 2 1.4 DM_SQL所支持的数据类型 ..................................................................................................... 3 1.4.1 常规数据类型 .................................................................................................................... 3 1.4.2 日期时间数据类型 ............................................................................................................ 6 1.4.3 多媒体数据类型 ................................................................................................................ 9 1.4.4 数据类型别名 .................................................................................................................... 9 1.5 DM_SQL语言支持的表达式 ..................................................................................................... 9 1.5.1 数值表达式 ...................................................................................................................... 10 1.5.2 字符串表达式 .................................................................................................................. 11 1.5.3 时间值表达式 .................................................................................................................. 12 1.5.4 时间间隔值表达式 .......................................................................................................... 13 1.5.5 运算符的优先级 .............................................................................................................. 14 1.6 DM_SQL语言支持的数据库模式 ........................................................................................... 15 第2章本手册中的实例说明 ............................................................................................................... 16 2.1 实例库说明 .............................................................................................................................. 16 2.2 参考脚本 ................................................................................................................................. 24 第3章数据定义语句 ........................................................................................................................... 42 3.1 数据库定义语句 ...................................................................................................................... 42 3.2 数据库修改语句 ...................................................................................................................... 44 3.3 数据库删除语句 ...................................................................................................................... 46 3.4 设置当前数据库语句 .............................................................................................................. 46 3.5 登录定义语句 .......................................................................................................................... 47 3.6 登录修改语句 .......................................................................................................................... 51 3.7 登录删除语句 .......................................................................................................................... 53 3.8 用户定义语句 .......................................................................................................................... 53 3.9 用户修改语句 .......................................................................................................................... 54 3.10 用户删除语句 ........................................................................................................................ 54 3.11 模式定义语句 ........................................................................................................................ 55 3.12 设置当前模式语句 ................................................................................................................ 56 3.13 模式删除语句 ........................................................................................................................ 57 3.14 基表定义语句 ........................................................................................................................ 57 3.15 基表修改语句 ........................................................................................................................ 68 3.16 基表删除语句 ..................................................................................................................... 74 3.17 全表删除语句 ........................................................................................................................ 75 3.18 索引定义语句 ........................................................................................................................ 76 3.19 索引删除语句 ........................................................................................................................ 78 3.20 序列定义语句 ........................................................................................................................ 79 3.21 序列删除语句 ........................................................................................................................ 80 3.22 全文索引定义语句 ................................................................................................................ 81 3.23 全文索引修改语句 ................................................................................................................ 81 3.24 全文索引删除语句 ................................................................................................................ 82 II 3.25 数据库快照定义语句 ............................................................................................................ 83 3.26 数据库快照删除语句 ............................................................................................................ 84 第4章数据查询语句和全文检索语句 ............................................................................................... 85 4.1 单表查询 ................................................................................................................................. 91 4.1.1 简单查询 .......................................................................................................................... 91 4.1.2 带条件查询 ...................................................................................................................... 92 4.1.3 集函数 .............................................................................................................................. 94 4.1.4 情况表达式 ...................................................................................................................... 96 4.2 连接查询 ................................................................................................................................. 98 4.3 子查询 ................................................................................................................................... 105 4.3.1 标量子查询 .................................................................................................................... 106 4.3.2 表子查询 ........................................................................................................................ 107 4.3.3 派生表子查询 ................................................................................................................ 109 4.3.4 定量比较 ........................................................................................................................ 110 4.3.5 带EXISTS谓词的子查询 ............................................................................................... 111 4.3.6 多列表子查询 ................................................................................................................ 112 4.4 查询结果的合并 .....................................................................................................................113 4.5 GROUP BY和HAVING子句 ...................................................................................................114 4.5.1 GROUP BY子句的使用 ................................................................................................. 114 4.5.2 HAVING子句的使用 ...................................................................................................... 115 4.6 ORDER BY子句 ......................................................................................................................116 4.7 选取前几条数据 .....................................................................................................................117 4.8 选取其中几条数据 .................................................................................................................117 4.9 全文检索 ................................................................................................................................118 4.10 层次查询 .............................................................................................................................. 120 4.10.1 层次查询子句 .............................................................................................................. 120 4.10.2 层次查询相关伪列 ...................................................................................................... 121 4.10.3 层次查询相关操作符 .................................................................................................. 121 4.10.4 层次查询相关函数 ...................................................................................................... 121 4.11 查看执行计划 ...................................................................................................................... 125 第5章数据的插入、删除和修改 ..................................................................................................... 126 5.1 数据插入语句 ........................................................................................................................ 126 5.2 数据修改语句 ........................................................................................................................ 129 5.3 数据删除语句 ........................................................................................................................ 130 5.4 伪列的使用 ............................................................................................................................ 131 5.4.1 ROWID ........................................................................................................................... 131 5.4.2 UID和USER .................................................................................................................... 132 5.4.3 ROWNUM ...................................................................................................................... 132 5.5 DM自增列的使用 ................................................................................................................... 132 5.5.1 DM自增列定义 ............................................................................................................... 132 5.5.2 SET IDENTITY_INSERT 属性 ..................................................................................... 133 第6章视图 ........................................................................................................................................ 136 6.1 视图的作用 .......................................................................................................................... 136 6.2 视图的定义 ............................................................................................................................ 137 6.3 视图的删除 ............................................................................................................................ 139 6.4 视图的查询 ............................................................................................................................ 140 III 6.5 视图数据的更新 .................................................................................................................... 141 第7章嵌入式SQL ............................................................................................................................. 143 7.1 SQL前缀和终结符 ................................................................................................................. 143 7.2 宿主变量 ............................................................................................................................... 143 7.2.1 输入和输出变量 ............................................................................................................ 144 7.2.2 指示符变量 .................................................................................................................... 145 7.3 服务器登录与退出 ................................................................................................................ 145 7.3.1 登录服务器 .................................................................................................................... 145 7.3.2 退出服务器 .................................................................................................................... 146 7.4 游标的定义与操纵 ................................................................................................................ 146 7.4.1 定义游标语句 ................................................................................................................ 147 7.4.2 打开游标语句 ................................................................................................................ 147 7.4.3 拨动游标语句 ................................................................................................................ 148 7.4.4 关闭游标语句 ................................................................................................................ 150 7.4.5 关于可更新游标 ............................................................................................................ 150 7.4.6 游标定位删除语句 ........................................................................................................ 150 7.4.7 游标定位修改语句 ........................................................................................................ 151 7.5 单元组查询语句 .................................................................................................................... 152 7.6 动态SQL ............................................................................................................................... 153 7.6.1 EXECUTE IMMEDIATE立即执行语句 ........................................................................ 154 7.6.2 PREPARE准备语句 ........................................................................................................ 155 7.6.3 EXCUTE执行语句 ......................................................................................................... 155 7.7 异常处理 ............................................................................................................................... 156 第8章函数 ........................................................................................................................................ 157 8.1 数值函数 ............................................................................................................................... 166 8.2 字符串函数 ............................................................................................................................ 173 8.3 日期时间函数 ........................................................................................................................ 184 8.4 空值判断函数 ........................................................................................................................ 193 8.5 类型转换函数 ........................................................................................................................ 194 8.6 杂类函数 ............................................................................................................................... 195 8.7 系统函数 ............................................................................................................................... 196 8.8 存储加密函数 ........................................................................................................................ 215 8.9 标记处理函数 ........................................................................................................................ 222 8.10 备份恢复函数 ...................................................................................................................... 223 8.11 附加分离数据库 .................................................................................................................. 230 第9章一致性和并发性 ..................................................................................................................... 233 9.1 DM事务相关语句 ................................................................................................................... 233 9.1.1 事务的开始 .................................................................................................................... 233 9.1.2 事务的结束 .................................................................................................................... 233 9.1.3 保存点相关语句 ............................................................................................................ 234 9.1.4 设置事务隔离级及读写特性 ........................................................................................ 235 9.2 DM手动上锁语句 ................................................................................................................... 236 第10章存储模块 ............................................................................................................................... 238 10.1 存储模块的定义 .................................................................................................................. 238 10.2 存储模块的删除 .................................................................................................................. 246 10.3 存储模块的控制语句 .......................................................................................................... 247 IV 10.3.1 语句块 .......................................................................................................................... 247 10.3.2 赋值语句 ...................................................................................................................... 249 10.3.3 条件语句 ...................................................................................................................... 249 10.3.4 循环语句 ...................................................................................................................... 250 10.3.5 EXIT语句 ...................................................................................................................... 252 10.3.6 调用语句 ...................................................................................................................... 253 10.3.7 RETURN语句 ............................................................................................................... 255 10.3.8 NULL语句 .................................................................................................................... 255 10.3.9 GOTO语句 .................................................................................................................... 255 10.3.10 RAISE语句 ................................................................................................................. 256 10.3.11 打印语句 .................................................................................................................... 256 10.4 存储模块的异常处理 .......................................................................................................... 256 10.4.1 异常变量的说明 .......................................................................................................... 257 10.4.2 异常的抛出 .................................................................................................................. 257 10.4.3 异常处理器 .................................................................................................................. 257 10.4.4 异常处理用法举例 ...................................................................................................... 257 10.5 存储模块的SQL语句 .......................................................................................................... 259 10.5.1 游标 .............................................................................................................................. 259 10.5.2 动态SQL ...................................................................................................................... 260 10.5.3 游标变量 ...................................................................................................................... 261 10.5.4 返回查询结果集 .......................................................................................................... 261 10.5.5 SQL语句应用举例 ........................................................................................................ 261 10.6 客户端存储模块 .................................................................................................................. 264 10.7 子过程、子函数 .................................................................................................................. 265 10.7.1 子过程 .......................................................................................................................... 265 10.7.2 子函数 .......................................................................................................................... 266 10.8 %TYPE、%ROWTYPE ....................................................................................................... 266 10.8.1 %TYPE .......................................................................................................................... 266 10.8.2 %ROWTYPE ................................................................................................................ 267 10.9 记录类型 .............................................................................................................................. 267 10.9.1 记录类型定义 .............................................................................................................. 267 10.9.2 记录赋值 ...................................................................................................................... 268 第11章触发器 .................................................................................................................................. 270 11.1 触发器的定义 ...................................................................................................................... 270 11.1.1 触发器类型 .................................................................................................................. 277 11.1.2 触发器激发顺序 .......................................................................................................... 279 11.1.3 新、旧行值的引用 ...................................................................................................... 280 11.1.4 触发器谓词 .................................................................................................................. 281 11.1.5 变异表 .......................................................................................................................... 282 11.1.6 设计触发器的原则 ...................................................................................................... 283 11.2 触发器的删除 ...................................................................................................................... 284 11.3 禁止和允许触发器 .............................................................................................................. 284 11.4 触发器应用举例 .................................................................................................................. 286 11.4.1 使用触发器实现审计功能 .......................................................................................... 286 11.4.2 使用触发器维护数据完整性 ...................................................................................... 286 11.4.3 使用触发器保障数据安全性 ...................................................................................... 287 V 11.4.4 使用触发器派生字段值 .............................................................................................. 288 第12章DM安全管理 ..................................................................................................................... 289 12.1 创建角色语句 ...................................................................................................................... 289 12.2 删除角色语句 ...................................................................................................................... 290 12.3 授权语句(数据库权限) ....................................................................................................... 290 12.4 授权语句(对象权限) ........................................................................................................... 291 12.5 授权语句(角色权限) ........................................................................................................... 295 12.6 回收权限语句(数据库权限) ............................................................................................... 295 12.7 回收权限语句(对象权限) ................................................................................................... 297 12.8 回收权限语句(角色权限) ................................................................................................... 299 12.9 策略与标记管理 .................................................................................................................. 300 12.9.1 创建策略 ...................................................................................................................... 300 12.9.2 修改策略 ...................................................................................................................... 300 12.9.3 删除策略 ...................................................................................................................... 302 12.9.4 安全标记 ...................................................................................................................... 302 12.9.5 用户标记设置语句 ...................................................................................................... 303 12.9.6 表标记设置语句 .......................................................................................................... 306 12.10 审计设置语句 .................................................................................................................... 308 12.11 审计取消语句 .................................................................................................................... 312 12.12 审计信息查阅语句 ............................................................................................................ 314 12.13 审计分析 ............................................................................................................................ 314 12.13.1 创建审计分析规则 .................................................................................................... 314 12.13.2 删除审计分析规则 .................................................................................................... 316 12.14加密引擎 ............................................................................................................................. 316 12.14.1 创建加密引擎 ............................................................................................................ 316 12.14.2 修改加密引擎 ............................................................................................................ 317 12.14.3 删除加密引擎 ............................................................................................................ 320 第13章外部链接 ............................................................................................................................... 321 13.1 创建外部链接 ...................................................................................................................... 321 13.2 删除外部链接 ...................................................................................................................... 322 13.3 使用外部连接进行远程对象操作 ...................................................................................... 322 第14章DM备份还原 ......................................................................................................................... 324 14.1 备份数据库 .......................................................................................................................... 324 14.2 还原数据库 .......................................................................................................................... 325 第15章包 ......................................................................................................................................... 327 15.1 创建包 ................................................................................................................................. 327 15.1.1 创建包规范 .................................................................................................................. 327 15.1.2 创建包主体 .................................................................................................................. 327 15.2 删除包 ................................................................................................................................. 328 15.2.1 删除包规范 .................................................................................................................. 328 15.2.2 删除包主体 .................................................................................................................. 329 15.3 应用实例 .............................................................................................................................. 329 第16章同义词 .................................................................................................................................. 332 16.1 创建同义词 .......................................................................................................................... 332 16.2 删除同义词 .......................................................................................................................... 332 附录1 关键字保留字 ...................................................................................................................... 334 VI 附录2 SQL语法描述说明 ................................................................................................................... 338 附录3 SQL命令参考 ........................................................................................................................... 341 附录4系统存储过程和函数 ............................................................................................................... 343 附录5 DM技术支持 ............................................................................................................................ 387
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值