apoc.custom.declareProcedure

存储过程 Apoc Extended 已弃用

apoc.custom.declareProcedure(signature, statement, mode, description) - 注册一个自定义 Cypher 过程

签名

apoc.custom.declareProcedure(signature :: STRING?, statement :: STRING?, mode = read :: STRING?, description =  :: STRING?) :: VOID

此过程不适用于集群环境,使用时可能会出现不可预期的行为。

输入参数

名称 类型 默认

签名

STRING?

null

statement

STRING?

null

mode

STRING?

description(描述)

STRING?

使用示例

这是一个简单的示例

CALL apoc.custom.declareProcedure('answerInteger() :: (row::INT)', 'RETURN 42 as answer')

这会将该语句注册为过程 custom.answer,随后您可以对其进行调用。

CALL custom.answerInteger
表 1. 结果
answer

42

或者你也可以这样写

CALL apoc.custom.declareProcedure('answer() :: (row::MAP)', 'RETURN 42 as answer')

在这种情况下,结果被封装在一个名为 row 的映射流中。因此,您可以执行以下操作

CALL custom.answer() YIELD row
RETURN row.answer
表 2. 结果
answer

42

我们可以创建函数 custom.powers,它返回第一个参数的幂流,直到并包括第二个参数提供的幂次

CALL apoc.custom.declareProcedure(
  'powers(input::INT, power::INT) :: (answer::INT)',
  'UNWIND range(0, $power) AS power
   RETURN $input ^ power AS answer'
);
过程、输入和输出名称必须至少包含 2 个字符。

我们可以使用此函数来返回 4°、4¹、4² 和 4³,如下面的查询所示

call custom.powers(4,3);
表 3. 结果
answer

1.0

4.0

16.0

64.0

此外,我们可以传递第三个参数作为字符串来指定过程模式(默认为 "WRITE")。它可以是: - "READ" - 如果过程仅对图执行读取操作 - "WRITE" - 如果过程可以对图执行读写操作 - "SCHEMA" - 如果过程将对模式(Schema)执行操作 - "DBMS" - 如果过程将执行系统级操作(即非针对图的操作)

此外,我们可以将 description 作为第四个参数传递,该描述将由 call apoc.custom.listSHOW PROCEDURES 返回。

© . This site is unofficial and not affiliated with Neo4j, Inc.