0

我需要使用存储过程阶段。

目前我只是为如何正确使用它做一个例子。

CREATE OR REPLACE PROCEDURE "STG"."TRUNC_TEST"
AS
BEGIN
    execute immediate 'truncate table TESTSP';
END;

这是我的简单存储过程示例。

我的工作设计可能是这样的

Oracle Connector 1=>Transformer=>Oracle Connector 2=>Stored Procedure Stage

Oracle 连接器 1 执行选择,Oracle 连接器 2 执行插入到 TESTSP

我在存储过程阶段的设置

一般:我已经输入了所有的凭证,事务 ISO 为无

句法

Procedure Name :  TRUNC_TEST
Procedure Type : Transform (i've also tried to change it to Target)
Database Procedure Type : Stored Procedure
Generate procedure call (checked)

参数

Empty

错误代码

Empty

NLS 地图

Project Default UTF-8

先进的

Execution mode :Default(Sequential)
Combinability : Default
Configuration file : default

在输入选项卡中

一般的

Execute Procedure for each row (checked)
Transaction size : 0

分区

Collector type Auto

Just brought all the columns from Oracle connector 2

先进的

Default

显示绿线和成功的工作,但 SP 不工作。它应该已经截断了 TESTSP 表,但是当我执行 a 时select *,数据仍然存在。

也许我的存储过程是错误的,因为我还在学习如何制作它?或者在存储过程阶段我的“设置”可能有问题?

4

1 回答 1

0

每次运行作业时,您只是在创建或替换 SP 定义。您必须调用 SP 才能执行它。

这就是您能够在外部执行它的原因。我建议您在数据库中创建一个通用 SP,它将接受表名作为参数。

创建完成后,使用 SP 阶段调用带有要截断的列的 SP。您也可以在 oracle 连接器中使用 after SQL 选项来避免额外的 SP 阶段。

于 2020-05-05T15:56:41.200 回答