SHOW PROCEDURES

使用 SHOW PROCEDURES 可以列出可用的过程(procedures)。

命令 SHOW PROCEDURES 仅返回默认输出。如需完整输出,请使用可选的 YIELD 命令。完整输出:SHOW PROCEDURES YIELD *

此命令将生成一个包含以下列的表格:

过程列表输出
描述 类型

名称 (name)

过程的名称。默认输出

STRING

description(描述)

过程的描述。默认输出

STRING

mode

过程模式,例如 READ(读)或 WRITE(写)。默认输出

STRING

worksOnSystem

该过程是否可以在 system 数据库上运行。默认输出

布尔值 (BOOLEAN)

签名

过程的签名。

STRING

argumentDescription

过程参数列表,作为由字符串和布尔值组成的映射(map),包含 nametypedefaultisDeprecateddescription

LIST<MAP>

returnDescription

过程的返回值列表,作为由字符串和布尔值组成的映射,包含 nametypeisDeprecateddescription

LIST<MAP>

admin

如果此过程是管理过程,则为 true

布尔值 (BOOLEAN)

rolesExecution

允许执行此过程的角色列表。如果没有 SHOW ROLE 权限,则返回 null

LIST<STRING>

rolesBoostedExecution

允许在执行此过程时使用提升模式(boosted mode)的角色列表。如果没有 SHOW ROLE 权限,则返回 null

LIST<STRING>

isDeprecated

该过程是否已弃用。

布尔值 (BOOLEAN)

deprecatedBy

如果已弃用,则为建议使用的替代过程;否则为 null

STRING

option

额外输出的映射,例如当该过程已弃用时。

MAP

过程的弃用信息会同时在 isDeprecatedoption 列中返回。

语法

有关语法说明的更多详情,可查看 此处

列出所有过程
SHOW PROCEDURE[S]
[YIELD { * | field[, ...] } [ORDER BY field[, ...]] [SKIP n] [LIMIT n]]
[WHERE expression]
[RETURN field[, ...] [ORDER BY field[, ...]] [SKIP n] [LIMIT n]]

使用 RETURN 子句时,YIELD 子句是强制性的,不能省略。

列出当前用户可执行的过程
SHOW PROCEDURE[S] EXECUTABLE [BY CURRENT USER]
[YIELD { * | field[, ...] } [ORDER BY field[, ...]] [SKIP n] [LIMIT n]]
[WHERE expression]
[RETURN field[, ...] [ORDER BY field[, ...]] [SKIP n] [LIMIT n]]

使用 RETURN 子句时,YIELD 子句是强制性的,不能省略。

列出指定用户可执行的过程
SHOW PROCEDURE[S] EXECUTABLE BY username
[YIELD { * | field[, ...] } [ORDER BY field[, ...]] [SKIP n] [LIMIT n]]
[WHERE expression]
[RETURN field[, ...] [ORDER BY field[, ...]] [SKIP n] [LIMIT n]]

需要 SHOW USER 权限。此命令不适用于 LDAP 用户。

使用 RETURN 子句时,YIELD 子句是强制性的,不能省略。

列出所有过程

要使用默认输出列列出所有可用过程,可以使用 SHOW PROCEDURES 命令。如果需要所有列,请使用 SHOW PROCEDURES YIELD *

查询
SHOW PROCEDURES
结果
名称 (name) description(描述) mode worksOnSystem

"cdc.current"

"返回可用于从其开始流式传输变更的当前变更标识符。"

"READ"

false

"cdc.earliest"

"返回可用于从其开始流式传输变更的最早变更标识符。"

"READ"

false

"cdc.query"

"查询由所提供的变更标识符观察到的变更。"

"READ"

false

"db.awaitIndex"

"等待索引上线(例如:CALL db.awaitIndex("MyIndex", 300))。"

"READ"

true

"db.awaitIndexes"

"等待所有索引上线(例如:CALL db.awaitIndexes(300))。"

"READ"

true

"db.checkpoint"

"发起并等待新的检查点,或等待任何正在进行的检查点完成。注意:这会暂时禁用 dbms.checkpoint.iops.limit 设置以使检查点更快完成。由于 IO 负载增加,这可能会导致事务吞吐量略有下降。"

"DBMS"

true

"db.clearQueryCaches"

"清除所有查询缓存。"

"DBMS"

true

"db.createLabel"

"创建一个标签"

"WRITE"

false

"db.createProperty"

"创建一个属性"

"WRITE"

false

"db.createRelationshipType"

"创建一个关系类型"

"WRITE"

false

"db.index.fulltext.awaitEventuallyConsistentIndexRefresh"

"等待最近提交的事务更新被应用到任何最终一致的全文索引中。"

"READ"

true

"db.index.fulltext.listAvailableAnalyzers"

"列出全文索引可配置的可用分析器。"

"READ"

true

"db.index.fulltext.queryNodes"

"查询给定的全文索引。返回匹配的节点及其 Lucene 查询得分,按得分排序。选项映射的有效键为:'skip' 跳过前 N 个结果;'limit' 限制返回的结果数量;'analyzer' 指定用于此查询的搜索分析器。"

"READ"

true

"db.index.fulltext.queryRelationships"

"查询给定的全文索引。返回匹配的关系及其 Lucene 查询得分,按得分排序。选项映射的有效键为:'skip' 跳过前 N 个结果;'limit' 限制返回的结果数量;'analyzer' 指定用于此查询的搜索分析器。"

"READ"

true

"db.info"

"提供有关数据库的信息。"

"READ"

true

"db.labels"

"列出数据库中所有可用的标签。"

"READ"

true

"db.listLocks"

"列出数据库中的所有锁。"

"DBMS"

true

"db.ping"

"此过程可供客户端工具使用,以测试它们是否正确连接到数据库。该过程在所有数据库中均可用且始终返回 true。如果无法调用此过程,则可检测到连接故障。"

"READ"

true

行数:15

上表仅显示了查询的前 15 个结果。有关 Neo4j 中所有内置过程的完整列表,请访问 Operations Manual → Procedures

列出过程并按输出列过滤

可以通过多种方式过滤列出的过程,其中一种是使用 WHERE 子句。例如,返回所有 admin 过程的名称:

查询
SHOW PROCEDURES YIELD name, admin
WHERE admin
结果
名称 (name) admin

"cdc.query"

true

"db.cdc.query"

true

"db.cdc.translateId"

true

"db.clearQueryCaches"

true

"db.listLocks"

true

行:5

上表仅显示了查询的前 5 个结果。有关 Neo4j 中所有需要 admin 权限的过程的完整列表,请访问 Operations Manual → Procedures

使用其他方式过滤过程

列出的过程也可以根据用户是否可以执行它们进行过滤。此过滤功能只能通过 EXECUTABLE 子句使用,不能通过 WHERE 子句使用。这是因为它是基于用户的权限进行判断,而不是基于可用输出列进行过滤。

使用 EXECUTABLE 子句有两个选项。第一个选项是过滤当前用户:

查询
SHOW PROCEDURES EXECUTABLE BY CURRENT USER YIELD *
结果
名称 (name) description(描述) rolesExecution rolesBoostedExecution …​

"db.awaitIndex"

"等待索引上线(例如:CALL db.awaitIndex("MyIndex", 300))。"

<null>

<null>

"db.awaitIndexes"

"等待所有索引上线(例如:CALL db.awaitIndexes(300))。"

<null>

<null>

"db.checkpoint"

"发起并等待新的检查点,或等待任何正在进行的检查点完成。注意:这会暂时禁用 dbms.checkpoint.iops.limit 设置以使检查点更快完成。由于 IO 负载增加,这可能会导致事务吞吐量略有下降。"

<null>

<null>

"db.clearQueryCaches"

"清除所有查询缓存。"

<null>

<null>

"db.createLabel"

"创建一个标签"

<null>

<null>

"db.createProperty"

"创建一个属性"

<null>

<null>

"db.createRelationshipType"

"创建一个关系类型"

<null>

<null>

"db.index.fulltext.awaitEventuallyConsistentIndexRefresh"

"等待最近提交的事务更新被应用到任何最终一致的全文索引中。"

<null>

<null>

"db.index.fulltext.listAvailableAnalyzers"

"列出全文索引可配置的可用分析器。"

<null>

<null>

"db.index.fulltext.queryNodes"

"查询给定的全文索引。返回匹配的节点及其 Lucene 查询得分,按得分排序。选项映射的有效键为:'skip' 跳过前 N 个结果;'limit' 限制返回的结果数量;'analyzer' 指定用于此查询的搜索分析器。"

<null>

<null>

"db.index.fulltext.queryRelationships"

"查询给定的全文索引。返回匹配的关系及其 Lucene 查询得分,按得分排序。选项映射的有效键为:'skip' 跳过前 N 个结果;'limit' 限制返回的结果数量;'analyzer' 指定用于此查询的搜索分析器。"

<null>

<null>

"db.info"

"提供有关数据库的信息。"

<null>

<null>

"db.labels"

"列出数据库中所有可用的标签。"

<null>

<null>

"db.listLocks"

"列出数据库中的所有锁。"

<null>

<null>

"db.ping"

"此过程可供客户端工具使用,以测试它们是否正确连接到数据库。该过程在所有数据库中均可用且始终返回 true。如果无法调用此过程,则可检测到连接故障。"

<null>

<null>

行数:15

上表仅显示了查询的前 15 个结果。注意,由于缺少 SHOW ROLE 权限,两个 roles 列为空。另请注意,以下列不在表中:

  • mode

  • worksOnSystem

  • 签名

  • argumentDescription

  • returnDescription

  • admin

  • isDeprecated

  • deprecatedBy

  • 选项 (options)

使用 EXECUTABLE 子句的第二个选项是将列表过滤为仅包含特定用户可执行的过程。下例展示了用户 jake 可用的过程,该用户已被数据库管理员授予了 EXECUTE PROCEDURE dbms.* 权限。(有关 DBMS EXECUTE 权限管理的更多信息,请参阅 Operations Manual → The DBMS EXECUTE privileges)。

查询
SHOW PROCEDURES EXECUTABLE BY jake
结果
名称 (name) description(描述) mode worksOnSystem

"dbms.cluster.protocols"

"已安装协议概览。"

"DBMS"

true

"dbms.cluster.routing.getRoutingTable"

"返回给定数据库的已通告支持 Bolt 的端点,并根据每个端点的能力进行分类。例如,一个端点可能服务于读查询、写查询和/或未来的 getRoutingTable 请求。"

"DBMS"

true

"dbms.components"

"列出 DBMS 组件及其版本。"

"DBMS"

true

"dbms.info"

"提供有关 DBMS 的信息。"

"DBMS"

true

"dbms.killConnection"

"终止具有给定连接 ID 的网络连接。"

"DBMS"

false

"dbms.killConnections"

"终止所有具有给定连接 ID 的网络连接。"

"DBMS"

true

"dbms.listActiveLocks"

"列出授予执行给定查询 ID 的查询的事务的所有活动锁请求。"

"DBMS"

true

"dbms.listCapabilities"

"列出功能。"

"DBMS"

true

"dbms.listConnections"

"列出当前实例上用户可见的所有已接受网络连接。"

"DBMS"

true

"dbms.listPools"

"列出当前实例上用户可见的所有已注册内存池(包括子池)。"

"DBMS"

true

"dbms.queryJmx"

"通过域和名称查询 JMX 管理数据。例如,“:”"

"DBMS"

true

"dbms.routing.getRoutingTable"

"返回给定数据库的已通告支持 Bolt 的端点,并根据每个端点的能力进行分类。例如,一个端点可能服务于读查询、写查询和/或未来的 getRoutingTable 请求。"

"DBMS"

true

"dbms.showCurrentUser"

"显示当前用户。"

"DBMS"

true

行数:13