【问题标题】:How to call several Oracle stored procedures in Pentaho (PDI)如何在 Pentaho (PDI) 中调用多个 Oracle 存储过程
【发布时间】:2016-03-11 12:10:10
【问题描述】:

我有下一个脚本,我试图在 Pentaho 数据集成中作为 Job/Transformation 运行 - 它取自 Toad,它按预期工作。

begin
 SOME_PACKAGE.SOMESTOREDPROCEDURE;
 SOME_PACKAGE2.SOMESTOREDPROCEDURE2;
end;
/

我尝试了两个步骤调用数据库过程(一个接一个),但它的行为方式不同 - 第一个过程是设置一些参数,第二个是尝试使用它们,但有两个步骤 -第二个的参数未设置。

我尝试了执行 SQL 脚本步骤,但似乎我无法弄清楚如何从那里调用这些过程。 第一个过程有一个可选参数,第二个没有

我试过了

begin
 SOME_PACKAGE.SOMESTOREDPROCEDURE;
 SOME_PACKAGE2.SOMESTOREDPROCEDURE2;
end;

(get ORA-06550: line 2, column 32: PLS-00103: Encountered the symbol "end-of-file")

或者

SOME_PACKAGE.SOMESTOREDPROCEDURE;
SOME_PACKAGE2.SOMESTOREDPROCEDURE2;

(得到 ORA-00900: 无效的 SQL 语句)

或者

 CALL SOME_PACKAGE.SOMESTOREDPROCEDURE;
 CALL SOME_PACKAGE2.SOMESTOREDPROCEDURE2;

get(ORA-00911: 无效字符)

或者

EXEC SOME_PACKAGE.SOMESTOREDPROCEDURE;
EXEC SOME_PACKAGE2.SOMESTOREDPROCEDURE2;

(得到 ORA-00900: 无效的 SQL 语句)

或相同但添加架构前缀 - 结果相同。

【问题讨论】:

  • 您是否检查了Execute for each row? 复选框在您尝试过的第一个选项中(Execute SQL script)?
  • 您是否考虑过编写一个调用第一个和第二个过程的包装过程?在 Pentaho 中,这将被视为一笔交易
  • 我检查了Execute for each row,但没有帮助。问题是我为SOMESTOREDPROCEDURE2 提供了 20 个不同的案例,我认为为所有这些案例编写包装器并不是一个好主意。我想我会尝试一种新的方法来解决这个问题。无论如何,在Execute SQL script 中你不能写所有东西,这听起来很奇怪。
  • 对不起,我混淆了复选框,您必须在 Execute SQL script 中选中 Execute as a single statement 复选框。在这种情况下它应该可以工作。

标签: oracle stored-procedures pentaho kettle


【解决方案1】:

在 PDI 中,所有步骤都并行执行。因此,如果您调用 2 个或更多 DB Procedure 步骤,它将并行执行。根据您的问题,这不是您打算实现的。实现的唯一方法是添加两个单独的转换(.ktr)文件并在每个文件中调用“数据库过程”步骤。

希望这会有所帮助:)

【讨论】:

  • 我以这种方式尝试过 - 有一个带有两个转换的作业,每个人都在调用一个 DB 过程,但结果是,当涉及到第二个存储过程时,它看到参数不变。这不可能通过 Execute SQL Script 步骤来完成吗?
猜你喜欢
  • 1970-01-01
  • 2017-09-20
  • 2011-05-08
  • 2022-01-18
  • 1970-01-01
  • 1970-01-01
  • 2021-09-24
  • 2010-12-16
  • 1970-01-01
相关资源
最近更新 更多