配置参数¶
每个参数均由一个名称和一个值组成。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。