点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
你好
我们正在将我们的MS SQL查询迁移到B1的HANA,我们陷入了一个关键问题。 我们在MS SQL中广泛使用了内联表值函数,以便我们可以有效地重用我们的代码。 例如
创建函数[dbo]。[UDF_AddressFormat](@ Street VARCHAR(50),@ Block VARCHAR(50)) 以RETURNS表的形式返回(选择CONCAT(@Street,",",@Block)AS [地址])
我们在各种过程和其他功能中使用它的方式是:
选择T0.CardCode,T0.CardName,(从[dbo]中选择地址。[UDF_AddressFormat](T1.Street,T1.Block))AS'BillToAddressString' 从OCRD T0内联接CRD1 T1到T0.CardCode = T1.CardCode AND T0.BillToDef = T1.Address AND T1.AdresType ='B'
这在MS SQL中效果很好。 但是我们无法在HANA中复制此功能。
我们尝试在HANA中创建表函数,但是当我们如上所述在HANA中执行最终查询时,出现错误:
功能不支持:字段或表别名不能作为表函数的输入
我什至在寻找OUTER APPLY运算符来实现这一目标,但HANA似乎也不支持。
有人可以建议前进的方向或其他功能吗? 我们在哪里出错了?
注意:我们在函数中的操作要比这复杂得多。 简单的表值函数用于演示目的,并使其更易于理解。
也许您可以向我们展示您的HANA表函数和您要尝试执行的查询。
并且您可以在查询的字段列表中使用标量函数。
该函数中有一个更正:
(SELECT CONCAT(@Street,'-',@Block)AS [地址])
仅在from子句中不能在查询的字段列表中使用表函数 。 因此,您可以创建标量函数或针对特定情况直接使用串联运算符(" ||"),也可以使用 CONCAT 函数(例如... CONCAT(T1。" STREET",CONCAT('-',T1。" BLOCK"))...)
我创建的HANA表函数是:
xyz是架构。
我正在按以下方式使用此功能:
使用此方法时,出现以下错误:
功能不受支持:字段或表别名不能用作表函数的输入
我没有考虑使用标量函数,因为我读到标量UDF对SQL的性能非常不利。 这就是为什么我们坚持使用嵌入式TVF。
我在问题的注释中添加了HANA代码。
再次: 表函数不能在查询的字段列表中使用! 如果需要并且需要使用表函数,则必须在表函数中实现整个逻辑,并在查询的from子句中使用它。
一周热门 更多>