跳转至
开发版采用单机部署,无需产品 License 文件。需要多机部署或大规模性能测试? 了解企业版

配置参数

每个参数均由一个名称和一个值组成。GQL 支持配置会话参数和查询参数。

  • 会话参数作用于会话,可在当前会话中的所有语句中使用。有关设置会话参数的更多信息,请参见 SESSION SET。
  • 查询参数作用于查询,仅在当前查询中使用。有关设置查询参数的更多信息,请参见设置查询参数。

如果查询参数和会话参数同名,则优先使用查询参数。

设置查询参数

可使用关键字PARAMETERS在语句中设置查询参数。名称必须以美元符号($)为前缀,值必须是以下数据类型之一的字面量:数值、字符串、布尔、时间、列表和记录。参数值的数据类型根据其值自动推断,因此无需显式指定。更多信息,请参见字面量。

支持设置单个或多个参数:

'''
-- 设置单个参数
PARAMETERS $i=20 USE movie MATCH (n:Person WHERE n.id = $i) RETURN n.id
'''

'''
-- 设置多个参数
PARAMETERS $x=1, $y=2 USE movie MATCH (n:Person WHERE n.id = $x OR n.id = $y) RETURN n.id
'''

也可省略PARAMETERS关键字,直接使用$参数名=值的简写形式:

$i=20 USE movie MATCH (n:Person WHERE n.id = $i) RETURN n.id

参数值支持列表等复合数据类型:

PARAMETERS $ids = [1, 2, 3] USE movie MATCH (n:Person WHERE n.id IN $ids) RETURN n.id

此外,查询参数可以与查询提示(Query Hint)结合使用,在单次查询中同时调整优化器行为和传入参数:

'''
/*+ SET_VAR(query_concurrency = 1) */
PARAMETERS $i=1
USE movie MATCH (n:Person WHERE n.id = $i) RETURN n.name
'''

使用会话参数

会话参数设置后,可在当前会话的任意语句中直接使用。支持同时设置多个参数,参数值也支持列表、记录等复合类型:

'''
-- 设置单个会话参数
SESSION SET VALUE $param = 100
'''

'''
-- 同时设置多个会话参数
SESSION SET VALUE $i_1 = 10, $i_2 = 20
'''

'''
-- 设置列表类型参数
SESSION SET VALUE $ids = [1, 2, 3]
'''

'''
-- 设置记录类型参数
SESSION SET VALUE $config = RECORD {a: 1, b: true, c: "test"}
'''

设置后在查询中引用:

'''
USE movie MATCH (n@Actor WHERE n.id = $param) RETURN n.name AS name
'''

返回:

+----------------+
| name           |
+----------------+
| Scott Speedman |
+----------------+

查看和删除参数

  • 查看当前会话中的所有参数,请参见 SHOW PARAMETERS。
  • 查看指定参数的值,可使用SHOW PARAMETER $参数名。
  • 删除指定会话参数,可使用 SESSION RESET $参数名。
  • 删除所有会话参数,可使用SESSION RESET ALL PARAMETERS。