为什么DataStage中的存储过程阶段无法正常工作?

问题描述 投票:0回答:1

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

目前,我只是在举例说明如何正确使用它。

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为None

语法

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表,但是当我执行select *时,数据仍然存在。

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

oracle etl data-warehouse datastage ibm-infosphere
1个回答
0
投票

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

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

一旦创建,请使用SP阶段用要截断的列调用SP。您还可以在oracle连接器中使用after SQL选项,以避免额外的SP阶段。

© www.soinside.com 2019 - 2024. All rights reserved.