在Data Factory V2中截取之前截断Oracle数据库中的表



我正在处理一个Ingestion Flow,我们将数据从csv文件摄取到Oracle数据库。这是一个截断和加载。因此,我们应该在加载表之前截断它。正在尝试在ADF 的查找活动中执行以下SP

BEGIN
execute oracle.cml_trunc_table('SCHEMA','TABLE_NAME')";
END;

抛出以下错误

PLS-00103: Encountered the symbol "ORACLE" when expecting one of the following:
:= . ( @ % ; immediate
The symbol ":=" was substituted for "ORACLE" to continue.

还尝试删除";ORACLE";关键字,它失败,SQL无效/是否有其他方法可以执行截断表语句

提前感谢

我对Azure一无所知,但由于您收到的错误与Oracle有关,它表明您使用了无效语法。

看起来您正在尝试调用一个名为cml_trunc_table的过程,该过程是名为oracle的Oracle用户拥有的a),或者是名为oracle的程序包的部分。

另一方面,execute看起来就像您试图a)在SQL*Plus提示符下执行该过程,或者

b)在我看来,你应该试试其中一种:

完全删除execute

begin
oracle.cms_trunc_table('SCHEMA', 'TABLE_NAME');
end;
/

或者(如果你在SQL*Plus提示下运行它——我怀疑你是这样):

exec oracle.cms_trunc_table('SCHEMA', 'TABLE_NAME');

或者使用动态SQL,但您只需要截断表,而不调用过程:

begin
execute immediate 'truncate table schema.table_name';
end;
/

如果我必须下注,我会把钱放在我发布的第一个选项上。

还有一件事是查找活动希望返回一些值。请原谅我对PL/SQL一无所知,但在tSQL工作中,我会返回一些值,所以存储过程的最后一行应该有一些类似的内容

选择某个列。

相关内容

  • 没有找到相关文章

最新更新