数据服务:错误表达

2020-09-23 02:56发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我们想用表所有者以外的用户截断表。 后期提供了一个软件包,提供了执行此操作的程序。

过程TRUNCATE_TABLE(
         I_TABLE_NAME user_objects.object_name%type,
         I_CASCADE布尔值默认为false
     ); 

我们将包导入到数据存储中,但是它抱怨无法导入数据类型。 碰巧这是花哨的布尔值。 无论如何,我们都尝试使用它,因为在数据流之前在批处理作业中运行的脚本中有此默认设置。

我们可以从选择功能对话框的列表中选择过程(虽然不是在智能编辑器中?),但会得到以下参数列表。

我们只输入I_TABLE_NAME

 DS_DWH_ETL.IL。" PKG_OBJECT_MANAGEMENT.TRUNCATE_TABLE"(HE#PATIENT,AL_UNSPECIFIED_PARAM,AL_UNSPECIFIED_PARAM)

在脚本编辑器中。 执行此操作将返回提到的错误。 同样,进行以下调整不会改变结果。

 DS_DWH_ETL.IL。" PKG_OBJECT_MANAGEMENT.TRUNCATE_TABLE"(HE#PATIENT)
 DS_DWH_ETL.IL。" PKG_OBJECT_MANAGEMENT.TRUNCATE_TABLE"(" HE#PATIENT")
 DS_DWH_ETL.IL。" PKG_OBJECT_MANAGEMENT.TRUNCATE_TABLE"('HE#PATIENT',false)

我们缺少什么?

顺便说一句,我们还尝试了具有相同结果的SQL函数。 而且,我们还尝试了一个名为"不存在的表"的幻想,希望表或视图不存在错误无济于事。

亲切的问候Thiemo

(6.0 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我们想用表所有者以外的用户截断表。 后期提供了一个软件包,提供了执行此操作的程序。

过程TRUNCATE_TABLE(
         I_TABLE_NAME user_objects.object_name%type,
         I_CASCADE布尔值默认为false
     ); 

我们将包导入到数据存储中,但是它抱怨无法导入数据类型。 碰巧这是花哨的布尔值。 无论如何,我们都尝试使用它,因为在数据流之前在批处理作业中运行的脚本中有此默认设置。

我们可以从选择功能对话框的列表中选择过程(虽然不是在智能编辑器中?),但会得到以下参数列表。

我们只输入I_TABLE_NAME

 DS_DWH_ETL.IL。" PKG_OBJECT_MANAGEMENT.TRUNCATE_TABLE"(HE#PATIENT,AL_UNSPECIFIED_PARAM,AL_UNSPECIFIED_PARAM)

在脚本编辑器中。 执行此操作将返回提到的错误。 同样,进行以下调整不会改变结果。

 DS_DWH_ETL.IL。" PKG_OBJECT_MANAGEMENT.TRUNCATE_TABLE"(HE#PATIENT)
 DS_DWH_ETL.IL。" PKG_OBJECT_MANAGEMENT.TRUNCATE_TABLE"(" HE#PATIENT")
 DS_DWH_ETL.IL。" PKG_OBJECT_MANAGEMENT.TRUNCATE_TABLE"('HE#PATIENT',false)

我们缺少什么?

顺便说一句,我们还尝试了具有相同结果的SQL函数。 而且,我们还尝试了一个名为"不存在的表"的幻想,希望表或视图不存在错误无济于事。

亲切的问候Thiemo

(6.0 kB)
付费偷看设置
发送
4条回答
暮风yp
1楼 · 2020-09-23 03:43.采纳回答

罪魁祸首是将空参数移交给包含脚本的数据流。 所有工作现在都按预期进行。

绿领巾童鞋
2楼-- · 2020-09-23 03:53

您可以尝试使用名称中没有散列的表吗?

jovirus
3楼-- · 2020-09-23 03:56

为什么要调用截断表的过程 ?

sql('<数据存储名称>','截断表OWNER.TABLE')可以解决问题。

黑丝骑士
4楼-- · 2020-09-23 03:56

如果数据存储用户具有数据库权限,就可以这样做。 我们的概念是将数据库对象的所有权与数据的操作分开。 也就是说,我们使用ETL用户来操纵IL拥有的表中的数据。 由于Oracle的截断权政策暗示了删除权,因此用户ETL尚未获得。 (我们认为这是设计不好的,但我们无能为力)。 因此,我们按软件包创建了此替代方法。

为了更好地了解我们在做什么,我们创建了一个仅包含以下内容的脚本。

 sql('DS_DWH_ETL','截断表LZ.HE#PAITENT'); 

但是,错误基本上仍然存在:

 5616 7496 VAL-030159 22/03/2018 11:45:21发现错误的表达式<>。 检查其语法并修复此表达式。
 

一周热门 更多>