我正在处理一个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
的程序包的部分。
另一方面, b)在我看来,你应该试试其中一种: 完全删除 或者(如果你在SQL*Plus提示下运行它——我怀疑你是这样): 或者使用动态SQL,但您只需要截断表,而不调用过程: 如果我必须下注,我会把钱放在我发布的第一个选项上。execute
看起来就像您试图a)在SQL*Plus提示符下执行该过程,或者execute
:begin
oracle.cms_trunc_table('SCHEMA', 'TABLE_NAME');
end;
/
exec oracle.cms_trunc_table('SCHEMA', 'TABLE_NAME');
begin
execute immediate 'truncate table schema.table_name';
end;
/
还有一件事是查找活动希望返回一些值。请原谅我对PL/SQL一无所知,但在tSQL工作中,我会返回一些值,所以存储过程的最后一行应该有一些类似的内容
选择某个列。