APPLY_FILTER:放置动态源

2020-09-07 07:48发布

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

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


嗨朋友,

根据以下链接:

使用动态 Rich Heilman的SAP HANA过滤器中, APPLY_FILTER语句不使用动态SQL,并且不与EXEC语句关联,因此在使用APPLY_FILTER时应该没有相关的性能问题。

我有一个过程,其中有多个带有Exec语句的动态SQL。 因此,我需要对其进行优化。 但是,我的源代码恰好是一个计算视图,随条件的不同而变化,因此,我的APPLY_FILTER源代码也会动态变化。 POC如下所示,其中P_SOURCE_CV是基于某些参数的其他过程的输入。 尝试激活此过程时,出现错误-SAP DBTech JDBC:[1310]:不允许使用标量类型: P_SOURCE_CV:第9行第1行(在pos 183)

步骤" TEST_APPLYFILTER"(
  IN P_SOURCE_CV VARCHAR(400)
 )
 语言SQLSCRIPT
 SQL安全定义器
 如
 开始
 DECLARE V_FILTER VARCHAR(1000)默认'COMPANY_CD =``1001''';
 ex_products = APPLY_FILTER(:P_SOURCE_CV,:V_FILTER);
 选择* FROM:ex_products;
 END; 

请告诉我如何使用APPLY_FILTER实现上述方案。

谢谢

Gaurav

HANA 2.0 SP3

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

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


嗨朋友,

根据以下链接:

使用动态 Rich Heilman的SAP HANA过滤器中, APPLY_FILTER语句不使用动态SQL,并且不与EXEC语句关联,因此在使用APPLY_FILTER时应该没有相关的性能问题。

我有一个过程,其中有多个带有Exec语句的动态SQL。 因此,我需要对其进行优化。 但是,我的源代码恰好是一个计算视图,随条件的不同而变化,因此,我的APPLY_FILTER源代码也会动态变化。 POC如下所示,其中P_SOURCE_CV是基于某些参数的其他过程的输入。 尝试激活此过程时,出现错误-SAP DBTech JDBC:[1310]:不允许使用标量类型: P_SOURCE_CV:第9行第1行(在pos 183)

步骤" TEST_APPLYFILTER"(
  IN P_SOURCE_CV VARCHAR(400)
 )
 语言SQLSCRIPT
 SQL安全定义器
 如
 开始
 DECLARE V_FILTER VARCHAR(1000)默认'COMPANY_CD =``1001''';
 ex_products = APPLY_FILTER(:P_SOURCE_CV,:V_FILTER);
 选择* FROM:ex_products;
 END; 

请告诉我如何使用APPLY_FILTER实现上述方案。

谢谢

Gaurav

HANA 2.0 SP3

付费偷看设置
发送
2条回答
Bunny_CDM
1楼-- · 2020-09-07 08:45

当V_FILTER为固定值(COMPANY_CD = 1001)时,为什么需要APPLY_FILTER? 您不能简单地使用WHERE COMPANY_CD = 1001吗?

哎,真难
2楼-- · 2020-09-07 08:29

嗨,康拉德,

我以V_FILTER为例。 在现实世界中,COMPANY_CD和许多其他参数(例如FISCAL_PERIOD)将作为过程的输入,然后我们将必须构造字符串。

'COMPANY_CD =``1001'''只是一个例子
实际上它将是:
 V_FILTER ='COMPANY_CD ='||  P_COMPANY_CD ||'AND FISCAL_PERIOD ='|| P_FISCAL_PRD;其中P_COMPANY_CD和P_FISCAL_PRD是过程输入参数

由于我的问题更多是在源头上,这就是为什么我没有过多强调过滤器。 您如何在APPLY_FILTER内部传递动态源P_SOURCE_CV是我的问题。

谢谢

Gaurav

一周热门 更多>