【发布时间】: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