SAP HANA中的控制评估订单

时间:2017-04-19 09:00:04

标签: sql sap hana sapb1

我在将代码从MS-SQL移植到HANA时遇到问题,因为HANA似乎没有合理掌握应该评估哪些代码。

在我的场景中,我有一个包含数据的字段 - 数据是单个字符鉴别符,可以是'M','E'或'I'(机器/员工/项目) - 然后是冒号,然后一个值。对于'M:'和'I:'前缀,这是一个字符串,对于'E:'前缀,这是一个整数。

我最初的问题是,如果我这样做:

CASE LEFT(LB."U_Resource", 1)

HANA评估案例的所有WHEN子句中的代码是否需要这些值来计算输出 - 更糟糕的是,这样做会停止查询执行并出现错误。有没有办法让HANA以短路的方式对此进行评估 - 或者在输入输出之前忽略错误?

我的'E:'子句包含以下代码:

WHEN 'E'
    THEN 'Emp(' || (
        SELECT "firstName" || ' ' || "lastName"
        FROM OHEM
        WHERE LENGTH(LTRIM(SUBSTRING(LB."U_Resource", 3, 50), '+-.0123456789')) = 0
        AND "empID" = CAST(SUBSTRING(LB."U_Resource", 3, 50) AS INT)
    ) || ')'

我得到的错误是当“U_Resource”为“LABOUR1”时该值不是INT。这适用于HANA 112.03,其中HANA从左到右执行,我的LH表达式保护了RH表达式。在HANA 122.05上,HANA始终首先执行RH表达式。

任何帮助都会受到赞赏 - 我认为这些都是执行引擎中的错误。

对于上下文 - 这是一个SAP B1数据库,而U_Resource“字段是用户定义表中的UDF。

由于

0 个答案:

没有答案