起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3219|回复: 9

[结贴] 求助!ksql编辑器用ksql语句里调用自定义函数无法加载

[复制链接]

19

主题

57

帖子

85

积分

初级会员

Rank: 2

积分
85
发表于 2013-3-20 14:15:39 | 显示全部楼层 |阅读模式
首先我自己定义了一个函数,生成了getResult.fn.m文件,如下图所示
无标题.jpg
在该文件的代码模块为/x5demo/basedemo/logic/code
代码为DynamicFun.getResult

我在/x5demo/basedemo/logic/code目录下建立了该方法
public class DynamicFun {
static public String getResult(String str1,String str2){
  String result=null;
  if(str1.equals(str2))
   result = "OK";
  else
   result = "NOT";
  return result;
}
}

该方法表示比较两个字符串是否相等并返回结果。
之后我在base.ontology.m的标准动作设置引用/x5demo/basedemo/logic/fn目录,如下图所示:
无标题.jpg
该Action的配置如下图所示:
无标题1.jpg
然后打开KSQL编辑器编写KSQL,该KSQL用两个表进行连接,然后再增加一个自定义的字段,该字段是分别抽取这两个表的某两个字段传入刚才我定义的函数里进行比较,并输出结果到数据集里,如下图所示
无标题2.jpg
KSQL语句如下:
select RE_A1.*,RE_B2.*,(:getResult( RE_A1.FNAME , RE_B2.FSTU )) as custom12
    from RE_A1 RE_A1
     join RE_B2 RE_B2 on RE_A1 = RE_B2
然后测试报错:
Caused by: com.justep.model.exception.ModelException: /system/logic/fn中找不到表达式函数定义:getResult
at com.justep.util.Utils.check(Unknown Source)
at com.justep.system.ksql.parser.ExpressionImpl.getMethod(Unknown Source)
... 50 more

37

主题

713

帖子

3310

积分

内部用户

积分
3310
发表于 2013-3-20 14:31:56 | 显示全部楼层
/system/logic/fn中找不到表达式函数定义:getResult
这个是模型位置问题,可能测试的时候函数模块指向有问题

但是即使没有这个问题,你这个函数也不能运行!!!
有一点必须要清楚,内存函数的执行时机是在SQL执行之前的,:getResult( RE_A1.FNAME , RE_B2.FSTU ),这个是不可能执行成功的
你这个逻辑,完全可以用case when来做,确实要写类似的函数,也需要用数据库函数
回复 支持 反对

使用道具 举报

19

主题

57

帖子

85

积分

初级会员

Rank: 2

积分
85
 楼主| 发表于 2013-3-20 14:56:04 | 显示全部楼层
那我是不是只能自己在数据库里写一个这样的函数,能否通过KSQL语句里调用我数据库里的这个函数呢?
回复 支持 反对

使用道具 举报

37

主题

713

帖子

3310

积分

内部用户

积分
3310
发表于 2013-3-20 14:58:32 | 显示全部楼层
二.KSQL特性
1.  KSQL中关键字、KSQL函数大小写不敏感,但概念、关系、别名、变量名及表达式函数名大小写敏感
2.  字符串使用单引号', 如:WHERE SA_OPPerson = 'PSN01'
3.  支持新增(INSERT), 删除(DELETE),修改(UPDATE)及查询(SELECT)的操作
4.  FROM支持连接(JOIN)和可选连接(OPTIONAL JOIN, 等价于SQL的LEFT JOIN)
5.  支持UNION,CASE WHEN以及子查询
6.  支持命名参数,以':'开头,如:WHERE SA_OPPerson.sName = :userName
7.  支持表达式函数,表达式函数在内存中计算,以':'开头,如:WHERE SA_OPPerson.sCode = peratorCode()
8.  支持本地SQL函数,以SQL.开头,如:SQL.datalength(SA_OPPerson.sName)  AS nlen FROM SA_OPPerson SA_OPPerson WHERE SA_OPPerson.sAge > 20

回复 支持 反对

使用道具 举报

19

主题

57

帖子

85

积分

初级会员

Rank: 2

积分
85
 楼主| 发表于 2013-3-20 16:03:52 | 显示全部楼层
本帖最后由 liaogen1984 于 2013-3-20 16:42 编辑

另外还有,我目前定义了两个自定义字段,这两个字段都是用我SQL里的函数计算出来的,返回值都是不一样的,如下图所示:
无标题5.jpg
但是我测试的时候这四个字段值都是一样的了
无标题4.jpg
是不是和这两个字段的名字有关系?我发现无法修改这两个自定义字段的名字
无标题4.jpg
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35955
发表于 2013-3-20 16:55:10 | 显示全部楼层
可以修改自定义字段的名字,用sql查出来的结果正确吗?
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

19

主题

57

帖子

85

积分

初级会员

Rank: 2

积分
85
 楼主| 发表于 2013-3-20 16:58:13 | 显示全部楼层
本帖最后由 liaogen1984 于 2013-3-20 17:03 编辑

我直接用sql查询出来的结果是正确的,但是我在ksq编辑器里定义多个自定义字段,这几个自定义字段分别取的是返回值不同的函数,测试的时候给我显示的这几个自定义字段的值都和第一个自定义字段的值是一样的。怎么修改自定义字段的名字,我发现我这里改不了
sql如下:
select re_a1.*,re_b2.*,compareresult(re_a1.fname,re_b2.fstu,re_a1.fcompany,re_b2.ffactory,re_a1.fplace,re_b2.fbirth) as result,comparename(re_a1.fname,re_b2.fstu) as nameresult from re_a1 left outer join re_b2 on re_a1.fno=re_b2.fcode
查询结果:
无标题6.jpg
这是正确的。
而我在sql编辑器配置如下:
无标题7.jpg
测试结果为:
无标题8.jpg
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35955
发表于 2013-3-20 17:09:36 | 显示全部楼层
别名直接在编辑器中就可以修改的啊
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

19

主题

57

帖子

85

积分

初级会员

Rank: 2

积分
85
 楼主| 发表于 2013-3-20 17:11:36 | 显示全部楼层
本帖最后由 liaogen1984 于 2013-3-20 17:16 编辑
jishuang 发表于 2013-3-20 17:09
别名直接在编辑器中就可以修改的啊


别名我直到修改,但是这个名字无法修改,都是“自定义字段”,而且测试查询出来的结果的别名都成了Express了。而且值都是一模一样,上面截图显示的就是这样。我发现使用了多个自定义字段,查询出来的结果这些自定义字段的值都与第一个自定义字段的值一样。
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35955
发表于 2013-3-21 09:00:00 | 显示全部楼层
这个是ksql编辑器的缺陷,后续解决,UI中展现是正确的,带来的不便请谅解!
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-6-11 10:14 , Processed in 0.079157 second(s), 25 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表