预处理语句

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映射,否则会抛出错误。参数名称中不要包含$

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