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"}');
该文章对您有帮助吗?