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

QQ登录

只需一步,快速开始

查看: 2702|回复: 2

[结贴] Java里调用KSQL的命名参数问题?

[复制链接]

10

主题

35

帖子

126

积分

初级会员

Rank: 2

积分
126
发表于 2018-3-13 17:48:45 | 显示全部楼层 |阅读模式
关于KSQL的命名参数应该怎么写?我这样写不对吗,代码如下

        public static void exstockScanBeforeSaveCE_ZCSMAction()throws NamingException,SQLException  {
                //保存日志时检查,所扫描配送单是否与派车一致,是的话更新派送计划的提货出库时间
                Table t = (Table)ContextHelper.getActionContext().getParameters().get("table");
                Iterator<Row> rows = t.iterator();
                String selectSql = "SELECT CE_PSDD FROM CE_PSDD WHERE CE_PSDD=:psd and FPSCP=:cph and FPSSJ=:sj";
                String updateSql = "UPDATE CE_PSDD SET fTHCKSJ=:currentDateTime() WHERE CE_PSDD=:psd ";
                HashMap<String,Object> arg = new HashMap<String,Object>();
                while(rows.hasNext()){
                        Row row = rows.next();
                        arg.put("psd", row.getValue("fPSD"));
                        arg.put("cph", row.getValue("fCPH"));
                        arg.put("sj", row.getValue("fSJ"));
                        Table result=KSQL.select(selectSql, arg, "/cems/dcOrder/data", null);
                        if(result.size()==0)
                                throw new SQLException("所扫描配送单不是计划内装车货物,请注意!");
                        else{
                                KSQL.executeUpdate(updateSql, arg, "/cems/dcOrder/data", null);
                        }
                }



结果报错:
保存数据失败! ,
执行KSQL出错, KSQL: SELECT CE_PSDD FROM CE_PSDD WHERE CE_PSDD=:psd
--> sql:
--> binds: []

编码:JUSTEP150210


后台错误:
Caused by: com.justep.exception.KSQLException: 编码: JUSTEP154115; 提示: KSQL语法错误, D FROM CE_PSDD ^^WHERE CE_PSDD=:中未找到需要的元素, 位置28期望是<Identifier>
        at com.justep.exception.KSQLException.create(Unknown Source)
        at com.justep.system.ksql.token.TokenManager.matchToken(Unknown Source)
        at com.justep.system.ksql.token.TokenManager.match(Unknown Source)
        at com.justep.system.ksql.parser.AbstractParser.conceptDeclare(Unknown Source)



91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36115
发表于 2018-3-13 17:55:15 | 显示全部楼层
报的错误跟命名参数无关

KSQL中必须给概念取别名
ksql.png
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

10

主题

35

帖子

126

积分

初级会员

Rank: 2

积分
126
 楼主| 发表于 2018-3-14 14:44:06 | 显示全部楼层
谢谢,修正后代码可以了

        public static void exstockScanBeforeSaveCE_ZCSMAction()throws NamingException,SQLException  {
                //保存日志时检查,所扫描配送单是否与派车一致,是的话更新派送计划的提货出库时间
                Table t = (Table)ContextHelper.getActionContext().getParameters().get("table");
                Iterator<Row> rows = t.iterator();
                String selectSql = "SELECT P FROM CE_PSDD P WHERE P=:psd and P.fPCCP=:cph and P.fPCSJ=:sj";
                String updateSql = "UPDATE CE_PSDD P SET P.fTHCKSJ=:currentDateTime() WHERE P=:psd ";
                HashMap<String,Object> arg = new HashMap<String,Object>();
                while(rows.hasNext()){
                        Row row = rows.next();
                        arg.put("psd", row.getValue("fPSD"));
                        arg.put("cph", row.getValue("fCPH"));
                        arg.put("sj", row.getValue("fSJ"));
                        Table result=KSQL.select(selectSql, arg, "/cems/dcOrder/data", null);
                        if(result.size()==0)
                                throw new SQLException("所扫描配送单不是计划内装车货物,请注意!");
                        else{
                                KSQL.executeUpdate(updateSql, arg, "/cems/dcOrder/data", null);
                        }
                }
                       

        }
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-3-15 02:52 , Processed in 0.064924 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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