Source: https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/variable-definition/ Documentation version: v5.3.2 # 变量 在 GQL 中,变量是一种用于表示特定数据类型的实例集合的[标识符](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/overview/keywords-identifiers/)。变量可用于在[过程](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/procedures/)中存储值,从而进行数据检索和操作等。 ## 按模式匹配角色分类的变量 - 点变量:表示图中的一个点。更多信息,请参见[点模式](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/patterns/node-patterns/)。 - 边变量:表示图中的一条边。更多信息,请参见[边模式](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/patterns/edge-patterns/)。 - 路径变量:表示图中的一条路径。更多信息,请参见[路径模式](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/patterns/path-patterns/)。 ## 按声明类型分类的变量 - 原始值变量:用于存储和操作值。更多信息,请参见[原始值变量](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/variable-definition/value-variable/)。 - 聚合值变量:用于存储和聚合值。更多信息,请参见[聚合值变量](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/variable-definition/agg/)。 - 活动集变量:用于存储需要处理的点集合。更多信息,请参见[活动集变量](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/variable-definition/active-set-variable/)。 - 图变量:用于存储和操作子图。更多信息,请参见[图变量](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/variable-definition/graph-variable/)。 - 表变量:用于存储和操作表格数据。更多信息,请参见[表变量](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/variable-definition/table-variable/)。 - 文件变量:用于定义基于文件的数据源和数据目的地。更多信息,请参见[文件变量](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/variable-definition/file-variable/)。 ### 变量作用域 在 GQL 中,花括号 (`{}`) 用于在过程中创建块。块可以嵌套在一起,从而实现结构化的控制流和变量管理。 根据声明时所在的块,变量有两种作用域: - 块级作用域 - 全局作用域 #### 块级作用域 块级变量在嵌套块内声明,且只能在该块内访问。 Note 块级变量不能与外部块中已声明的变量重名。 仅原始值变量支持块级作用域。 #### 全局作用域 全局变量必须在全局范围内声明,也即在过程体的最顶层。不能在任何嵌套块内声明。 以下变量支持全局作用域: - 原始值变量 - 聚合值变量,包括全局聚合值变量和点绑定聚合值变量 - 活动集变量 - 图变量 - 表变量 - 文件变量 在声明后,点绑定聚合值变量只能在匹配计算语句的[`per_block`](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/match-compute/#per_block)子句中进行聚合操作,而其他全局变量可以在过程的任何部分访问。