预处理语句

Cypher 可以在预处理语句中运行读取查询。当使用带有存储过程的参数时,必须在 Cypher 函数调用中放置一个 SQL 参数。有关详细信息,请参阅 Cypher 查询格式。

Cypher 参数格式

Cypher 参数的格式为 '$' 后跟一个标识符。与 Postgres 参数不同,Cypher 参数以字母开头,后跟任意长度的字母数字字符串。

示例:$parameter_name

预处理语句的准备

在 Cypher 中准备预处理语句是 Postgres 存储过程系统的扩展。使用 PREPARE 子句创建包含 Cypher 函数调用的查询。不要在 Cypher 查询调用中放置 Postgres 风格的参数,而是在查询中放置 Cypher 参数,并将 Postgres 参数作为 Cypher 函数调用的第三个参数。

PREPARE cypher_stored_procedure(agtype) AS
SELECT *
FROM cypher('expr', $$
    MATCH (v:Person)
    WHERE v.name = $name //Cypher 参数
    RETURN v
$$, $1) //必须在 Cypher 函数调用中放置 SQL 参数
AS (v agtype);

预处理语句的执行

执行预处理语句时,在 Cypher 函数调用中 Postgres 参数所在的位置放置一个包含参数值的 agtype map。该值必须是 agtype map,否则将抛出错误。参数名称不包含 '$'

EXECUTE cypher_stored_procedure('{"name": "Tobias"}');