SAP HANA过程:内部错误:没有可用的SCORE函数实现

2020-08-14 00:00发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 我搜索了Google和SA...

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

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


嗨,

我搜索了Google和SAP KB,但是找不到与此错误相关的任何内容。

我们正在使用ABAP报告调用HANA过程,但由于以下错误而崩溃:
"没有可用的SCORE函数实现"

我尝试在SQL Console中运行SQL,但没有错误。 (没有某些WHERE条件)
它在HANA 1.0上也没有错误运行,现在我们在HANA 2.0上。

有人遇到类似问题或确切知道分数"实施"在哪里吗?

该过程的"分数"部分如下所示:

立即将'INSERT INTES INTO" ABC :: TABLE2"
                              (    "得分",
                                 "X",
                                 "X",
                                 "X",
                                 "X",
                                 "X",
                                 "X",
                                 "X",
                                 "X",
                                 "X")
          选择TO_DECIMAL(SCORE(),3,2)作为"分数",
                             "X",
                             "X",
                             "X",
                             "X",
                             "X",
                             "X",
                             "X",
                             "X",
                             "X"
          来自" ABC :: TABLE1"
          在哪里包含(" ZXXX",CAST('''||:LV_FXXXXT ||'''作为文本),FUZZY('||:LV_FUZZY_SCORE ||',''textSearch = compare,Threshold ='||:LV_TOKEN_TREFFER |  |'''))
            AND SCORE()>'''||  :LV_FUZZY_SCORE ||  '''
            AND OXXXXXR ='''||  :LV_OXXXXXR ||  '''
            AND XXXXR ='''||  :LV_XXXXR ||  '''
            AND ZXXX ='''||  :LV_PSCD_ZXXX ||  '''
            AND FXXXXT ='''||  :LV_FXXXXT ||  ''''; 
6条回答
愤怒的猪头君
2020-08-14 00:48

这个错误消息引起了我的兴趣,我对此情况有所了解。

TL; DR:

对于HANA 2,当目标表是COLUMN存储表时,无法执行INSERT INTO(SELECT)的SQL执行。

要使其正常工作,您可以将SELECT的结果分配给 表变量,然后将该表变量用于INSERT INTO(SELECT ...)。
或者,您可以将目标表转换为ROW STORE表。

如果要在代码中保留动态SQL并且无法将目标表更改为行存储,则可能需要考虑 使用中间行存储表。

下面是要使用的代码:

创建列表tab1
 (aaa nvarchar(20)
 ,bbb bigint);

 创建列表tab2
 (aaa nvarchar(20)
 ,bbb bigint
 ,score_2十进制(5,4));

 插入tab1
 选择
 左(用户名20)
 ,to_bigint(rand()* 10000)
 来自用户;

 从tab1中选择*;

/*
 AAA BBB
 SYS 2,133
 系统4,763
 _SYS_STATISTICS 2,401
 _SYS_TABLE_REPLICAS 3,166
 _SYS_EPM 3,586
 _SYS_REPO 9,333
 _SYS_SQL_ANALYZER 9,636
 _SYS_TASK 7,742
 _SYS_AFL 8,490
 _SYS_WORKLOAD_REPLAY 5,320
 _SYS_DATA_ANONYMIZAT 2,790
 _SYS_PLAN_STABILITY 1,653
 TEL_ADMIN 4,010
 */


 插入tab2(aaa,bbb,score_2)
 (
  选择
  aaa,bbb,to_decimal(score(),5、4)作为得分
  从
  tab1
  哪里
  包含(aaa,'REPO',FUZZY(0.23))
 )
/*
 当tab2是列存储时:
 SAP DBTech JDBC:[264]:无效的数据类型:内部错误:没有可用的SCORE函数实现
 */

 修改表的tab2行;  -更改为行存储表
 -现在插入有效

 开始
 res =选择
  aaa,bbb,to_decimal(score(),5,4)作为score_2
  从
  tab1
  哪里
  包含(aaa,'REPO',FUZZY(0.23));
 
  选择* from:res;
 
  插入tab2(aaa,bbb,score_2)
  选择* from:res;
 结束;

 -这也有效

一周热门 更多>