Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


关键字过滤(KEYWORD_FILTER)

📄字数 1.3K
👁️阅读量 加载中...

引入版本

  • v12.5.0:支持 CREATE TABLE之后的关键字处理。
  • v12.1.8:支持 DML 语句中关键字过滤。

功能描述

KEYWORD_FILTER 用于过滤连接会话上的关键字。关键字过滤等价于添加双引号使用关键字。当过滤后的关键字出现在DML语句中,例如:SELECT/INSERT/UPDATE/DELETE/MERGE/CREATE TABLE,则被当作标识符处理。过滤后的关键字,可以作为表名、列表、别名使用;其他对象如库、模式、视图、序列、过程、函数等,不能使用。关键字过滤字符串中,多个关键字使用逗号,分隔,区分大小写,禁止使用空格。

参数属性

属性属性值
参数类型VARCHAR
默认值NULL
取值范围-
影响范围会话级
修改方式在线修改,立即生效

使用场景说明

注意

  1. 连接上配置关键字过滤后,此关键字相关DML语法将无法使用,如需使用相关语法只能通过无关键字过滤的连接执行。
  2. 将FROM/GROUP/ORDER/OR/AND关键字过滤后,相关SELECT将无法执行。

示例

  1. 连接字符串上设置关键字过滤。
sh
jdbc:xugu://localhost:5183/SYSTEM?USER=SYSDBA&PASSWORD=SYSDBA&KEYWORD_FILTER=TABLE
jdbc:xugu://localhost:5183/SYSTEM?USER=SYSDBA&PASSWORD=SYSDBA&KEYWORD_FILTER=TABLE,FUNCTION,CONSTANT
  1. 使用SET命令设置关键字过滤。
SQL
SQL> SET KEYWORD_FILTER TO 'TABLE';

Execute successful.
Use time:0 ms.

SQL> SET KEYWORD_FILTER TO 'TABLE,FUNCTION,CONSTANT';

Execute successful.
Use time:0 ms.

2.使用SHOW查询当前会话关键字过滤。

sql
SQL> SHOW KEYWORD_FILTER

+---------------------------+
|      KEYWORD_FILTER       |
+---------------------------+
| ,TABLE,FUNCTION,CONSTANT, |
+---------------------------+

(1 row)
Use time:0 ms.

4.查询系统视图ALL_SESSIONS字段KEYWORD_FILTER

sql
SQL> SELECT IP,KEYWORD_FILTER FROM ALL_SESSIONS;

+-----------+---------------------------+
|    IP     |      KEYWORD_FILTER       |
+-----------+---------------------------+
| 127.0.0.1 | ,TABLE,FUNCTION,CONSTANT, |
+-----------+---------------------------+

(1 row)
Use time:0 ms.

5.将关键字FROM过滤,FROM被当做标识符处理,建表成功,但SELECT查询失败。

sql
SQL> SET KEYWORD_FILTER TO 'FROM';

Execute successful.
Use time:0 ms.

SQL> CREATE TABLE from(id INTEGER, name VARCHAR(10));

Execute successful.
Use time:17 ms.

SQL> SELECT IP,KEYWORD_FILTER FROM ALL_SESSIONS;

Error: [E19132] 语法错误
[E19260 L1 C30] 期待符号: syntax error, unexpected IDENT, expecting end of file