跳到主要内容

Oracle Database 节点#

使用 Oracle Database 节点可自动化 Oracle 数据库中的工作,并将 Oracle 数据库与其他应用程序集成。n8n 内置支持多种 Oracle 数据库功能,包括执行 SQL 语句、从 Oracle 数据库获取、插入、更新或删除数据。此节点内部使用 node-oracledb 驱动

注意

有关设置身份验证的指南,请参阅 Oracle Database 凭据

要求 Oracle Database 19c 或更高版本。 如需使用透明应用连续性(TAC)和分片等高级 Oracle 数据库功能,还需 Oracle 客户端库 19c 或更高版本

操作#

删除#

使用此操作可删除整个表或表中的行。

输入以下参数:

  • 连接凭据:创建或选择现有的 Oracle Database 凭据
  • 操作:选择 删除
  • 模式:选择包含目标表的模式。选择 从列表选择 可从下拉列表选择模式,或选择 按名称输入 以输入模式名称。
  • :选择要操作的目标表。选择 从列表选择 可从下拉列表选择表,或选择 按名称输入 以输入表名称。
  • 命令:要执行的删除操作:
    • 清空:移除表数据但保留表结构。
    • 删除:删除符合"选择行"条件的行。若未选择任何条件,Oracle 数据库将删除所有行。
      • 选择行:定义 运算符 来匹配行。值可通过表达式或字符串以 JSON 格式传递。
      • 组合条件:如何组合"选择行"中的条件。AND 要求所有条件为真,OR 要求至少一个条件为真。
    • 丢弃:永久删除表数据及结构。

删除选项#

  • 语句批处理:向数据库发送语句的方式:
    • 单条语句:对所有传入项使用单条语句。
    • 独立执行:为执行的每个传入项执行一条语句。
    • 事务处理:在事务中执行所有语句。若发生故障,Oracle 数据库将回滚所有更改。

执行 SQL#

使用此操作可执行 SQL 语句。

输入以下参数:

  • 连接凭据:创建或选择现有的 Oracle Database 凭据
  • 操作:执行 SQL 执行 SQL
  • 语句:要执行的 SQL 语句。可使用 n8n 表达式 和位置参数(如 :1:2)或命名参数(如 :name:id)配合使用绑定参数。 要运行 PL/SQL 过程(例如 demo),可使用:
BEGIN   
demo;
END;

执行语句选项#

  • 绑定变量占位符值:输入语句中使用的绑定参数值使用绑定参数
  • 数字以字符串形式输出:指示是否应将数字作为字符串检索。
  • 获取数组大小:此属性为数字,用于设置从 Oracle 数据库获取查询行时使用的内部缓冲区大小。更改此值可能影响查询性能,但不会影响返回给应用程序的行数。
  • 预取行数:此属性是查询调优选项,用于设置底层 Oracle 驱动程序在查询内部初始语句执行阶段额外获取的行数。

插入#

使用此操作在表中插入行。

输入以下参数:

  • 连接凭据:创建或选择现有的 Oracle 数据库凭据
  • 操作:选择 插入
  • 模式:选择包含要操作表的模式。选择 从列表 从下拉列表中选择模式,或选择 按名称 输入模式名称。
  • :选择要操作的表。选择 从列表 从下拉列表中选择表,或选择 按名称 输入表名。
  • 映射列模式:如何将列名映射到输入数据:
    • 手动映射每列:选择每列要使用的值使用 n8n 表达式作为绑定值
    • 自动映射:自动将输入数据映射到 Oracle 数据库中匹配的列名。输入数据字段名称必须与 Oracle 数据库中的列名匹配才能生效。如有必要,可考虑在此节点前使用 编辑字段(设置)节点 按需调整格式。

插入选项#

  • 输出列:选择要输出的列。可从可用列列表中选择或使用表达式指定 ID。
  • 语句批处理:向数据库发送语句的方式:
    • 单条语句:对所有输入项使用单条语句。
    • 独立执行:为执行的每个输入项执行一条语句。
    • 事务处理:在事务中执行所有语句。如果发生故障,Oracle 数据库将回滚所有更改。

插入或更新#

使用此操作在表中插入或更新行。

输入以下参数:

  • 连接凭据:创建或选择现有的 Oracle 数据库凭据
  • 操作:选择 插入或更新
  • 模式:选择包含要操作表的模式。选择 从列表 从下拉列表中选择模式,或选择 按名称 输入模式名称。
  • :选择要操作的表。选择 从列表 从下拉列表中选择表,或选择 按名称 输入表名。
  • 映射列模式:如何将列名映射到输入数据:
    • 手动映射每列:选择每列要使用的值使用 n8n 表达式作为绑定值
    • 自动映射:自动将输入数据映射到 Oracle 数据库中匹配的列名。输入数据字段名称必须与 Oracle 数据库中的列名匹配才能生效。如有必要,可考虑在此节点前使用 编辑字段(设置)节点 按需调整格式。

插入或更新选项#

  • 输出列:选择要输出的列。可从可用列列表中选择或使用表达式指定 ID。
  • 语句批处理:向数据库发送语句的方式:
    • 单条语句:对所有输入项使用单条语句。
    • 独立执行:为执行的每个输入项执行一条语句。
    • 事务处理:在事务中执行所有语句。如果发生故障,Oracle 数据库将回滚所有更改。

选择#

使用此操作在表中选择行。

输入以下参数:

  • 连接凭据:创建或选择现有的 Oracle 数据库凭据
  • 操作:选择 选择
  • 模式:选择包含要操作表的模式。选择 从列表 从下拉列表中选择模式,或选择 按名称 输入模式名称。
  • :选择要操作的表。选择 从列表 从下拉列表中选择表,或选择 按名称 输入表名。
  • 返回全部:是否返回所有结果或仅返回指定限制内的结果。
  • 限制:当 返回全部 禁用时,要返回的最大项目数。
  • 选择行:设置选择行的条件。定义 运算符(作为 json)来匹配行。 可能因类型而异 — 例如在固定模式下:
    • 字符串:"hello"、hellowithoutquotes、"hello with space"
    • 数字:12
    • JSON:{ "key": "val" }

如果未选择任何内容,Oracle 数据库将选择所有行。

  • 组合条件:如何组合 选择行 中的条件。AND 要求所有条件都为真,而 OR 要求至少一个条件为真。
  • 排序:选择如何对选定的行进行排序。从列表中选择 或按 ID 选择,并选择排序 方向

选择选项#

  • 数字以字符串形式输出:指示是否应将数字作为字符串检索。
  • 获取数组大小:此属性为数字,用于设置从 Oracle 数据库获取查询行时使用的内部缓冲区大小。更改此值可能影响查询性能,但不会影响返回给应用程序的行数。
  • 预取行数:此属性是查询调优选项,用于设置底层 Oracle 驱动程序在查询内部初始语句执行阶段额外获取的行数。

更新#

使用此操作在表中更新行。

输入以下参数:

  • 连接凭据:创建或选择现有的 Oracle 数据库凭据
  • 操作:选择 更新
  • 模式:选择包含要操作表的模式。选择 从列表 从下拉列表中选择模式,或选择 按名称 输入模式名称。
  • :选择要操作的表。选择 从列表 从下拉列表中选择表,或选择 按名称 输入表名。
  • 映射列模式:如何将列名映射到输入数据:
    • 手动映射每列:选择每列要使用的值使用 n8n 表达式作为绑定值
    • 自动映射:自动将输入数据映射到 Oracle 数据库中匹配的列名。输入数据字段名称必须与 Oracle 数据库中的列名匹配才能生效。如有必要,可考虑在此节点前使用 编辑字段(设置)节点 按需调整格式。

更新选项#

  • 输出列:选择要输出的列。可从可用列列表中选择或使用表达式指定 ID。
  • 语句批处理:向数据库发送语句的方式:
    • 单条语句:对所有输入项使用单条语句。
    • 独立执行:为执行的每个输入项执行一条语句。
    • 事务处理:在事务中执行所有语句。如果发生故障,Oracle 数据库将回滚所有更改。

相关资源#

有关该服务的更多信息,请参阅 SQL 语言参考

有关 node-oracledb 驱动程序的更多信息,请参阅 node-oracledb 文档

使用绑定参数#

在创建要在 Oracle 数据库实例上运行的语句时,可以使用 选项 部分中的 绑定变量占位符值 字段将数据加载到语句中。n8n 会对语句参数中的数据进行清理,从而防止 SQL 注入。

例如,您可能希望通过颜色查找特定的水果。给定以下输入数据:

[
{
"FRUIT_ID": 1,
"FRUIT_NAME": "Apple",
"COLOR": "Red"
},
{
"FRUIT_ID": 2,
"FRUIT_NAME": "Banana",
"COLOR": "Yellow"
}
]

您可以编写如下语句:

SELECT * FROM FRUITS WHERE COLOR = :col

然后在绑定变量占位符值中,提供要使用的字段值。您既可以提供固定值,也可以使用表达式。本例中建议采用表达式方式,这样节点就能依次从每个输入项中提取颜色值:

// fruits is an example table name fruits, 
{{ $json.color }}

使用 n8n 表达式绑定值#

待发送值字段中,您可以使用 n8n 表达式提供输入。以下是不同数据类型的示例——您既可以输入常量值,也可以引用前序数据项的字段($json):

JSON#

  • 常量:{{ { k1: "v1", k2: "v2" } }}
  • 引用前序数据项:{{ $json.COL_JSON }}

向量#

  • 常量:{{ [1, 2, 3, 4.5] }}
  • 引用前序数据项:{{ $json.COL_VECTOR }}

二进制大对象#

  • 常量:{{ [94, 87, 34] }}{{ ' BLOB data string' }}
  • 引用前序数据项:{{ $json.COL_BLOB }}

原始数据#

  • 常量:{{ [94, 87, 34] }}
  • 引用前序数据项:{{ $json.COL_RAW }}

布尔值#

  • 常量:{{ true }}
  • 引用前序数据项:{{ $json.COL_BOOLEAN }}

数值#

  • 常量:1234
  • 引用前序数据项:{{ $json.COL_NUMBER }}

可变字符串#

  • 常量:' Hello World '
  • 引用前序数据项:{{ $json.COL_CHAR }}

这些示例假设 JSON 键名(如 COL_JSON, COL_VECTOR)直接对应相应的 SQL 列类型。