我需要使用存储过程阶段。
目前,我只是在举例说明如何正确使用它。
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 *
时,数据仍然存在。
也许我的存储过程是错误的,因为我仍在学习如何制作它?还是在存储过程阶段我的“设置”出了问题?
每次运行工作时,您只是在创建或替换SP定义。您必须调用SP才能执行它。
这就是您能够在外部执行它的原因。我建议您在数据库中创建一个通用SP,该SP将接受表名作为参数。
一旦创建,请使用SP阶段用要截断的列调用SP。您还可以在oracle连接器中使用after SQL选项,以避免额外的SP阶段。